def mark_lunarcal_day(clcmonth):
    ''' expand to whole year, mark the day of month and lunar calendar date in
    Chinese'''

    stdays= {}  # days have solar terms
    for d in clcmonth:
        if d['astro'] != 'newmoon':
            stdays[d['date']] = d['astro']


    # expand to whole year
    start = clcmonth[0]['date']
    yearend = clcmonth[-1]['date'] + 1
    lcdays = []
    while start < yearend:
        # scan the month start belongs
        for d in clcmonth:
            if d['date'] > start:
                break
            if d['astro'] == 'newmoon':
                monthstart = d['date']
                mname = d['month']

        day = {'date': start, 'month': mname, 'jieqi': None, 'holiday': None}
        day['day'] = int(start + 1 - monthstart)

        if start in stdays:
            day['jieqi'] = CN_SOLARTERM[stdays[start]]

        if day['day'] == 1:
            day['lunardate'] = CN_MON[day['month']]
        else:
            day['lunardate'] = CN_DAY[day['day']]

        lcdays.append(day)
        start += 1

    return lcdays
 expand to whole year, mark the day of month and lunar calendar date in
    Chinese
lunarcalbase.py