# -*- coding: utf-8 -*-

from ._global import _f, color

"=========================================版面控制类=========================================="

class LayoutPatterns:
    # 版心注解（BX）
    BX_infix = _f(r'''
        {fontset}  # 字号、字体
        (?P<ys>  # 文字颜色
            {_r[color]})?,
        (?P<bg>  # 版心高
            {_r[length]})。
        (?P<bk>  # 版心宽
            {_r[length]}),
        (?P<hj>  # 行距
            {_r[length]})
        (?P<sp>!?)  # 竖排
        (?P<bj>B?)  # 指定不拉行距
        (?P<db>D?)  # 表明页码和书眉相互独立，互不影响
        (?:C
            (?P<cg>\d+(?:\.\d+)?mm)。  # 成品尺寸高
            (?P<ck>\d+(?:\.\d+)?mm)  # 成品尺寸宽
            ,(?P<jz>A)?  # 版心居中排
            (?P<cy>S?\d+(?:\.\d+)?mm)  # 上空或下空尺寸
            ,(?P<cx>Z?\d+(?:\.\d+)?mm)  # 订口或切口尺寸
            ,(?P<cc>\d+(?:\.\d+)?mm)  # 出血尺寸
            ,(?P<qf>Q)?  # 区分左右页
            (?P<qd>F)?  # 起始页为单页
        )?
    ''')

    # 彩色注解（CS）
    CS_infix = color.replace('@', r'''
        (?P<ss>  # 设置颜色对象，缺省表示设置字符颜色
            X|  # 设置框线颜色
            D)?  # 设置底纹颜色
    ''') + r'?'

    # 始点注解（SD）
    SD_infix = _f(r'''(?:
        (?P<xp>X)|  # 将本注解前所排的内容先写入磁盘文件中，然后从当前位置继续排
        (?P<dy>  # 始点垂直位置
            {_r[lines]})?
        (?:,(?P<dx>  # 始点水平位置
            {_r[length]}))?
        (?P<xf>;N)?  # 按新方法计算排版的位置
    )?''')

    # 段首缩进注解（SJ）
    SJ_infix = _f(r'''(?:
        (?P<zk>  # 缩进单位字号
            {_r[size]})
        (?:。(?P<zs>[1-9]|10))?  # 缩进字数
        |(?:J(?P<sk>  # 缩进距离值
            {_r[length]}))
    )?''')

    # 上齐注解（SQ）
    # 整体注解（ZT）
    SQ_infix = ZT_prefix = _f(r'''
        (?P<gd>  # 高度
            {_r[lines]})?''')

    # 数字注解（SZ）
    SZ_infix = r'''(?P<sp>  # 竖排时数字排法
        H|  # 数字横向连排，但数字不能多于3位
        DB?  # 数字单个单个直立排，B：数字不能拆行
    )?'''

    # 外文竖排（WP）
    WP_infix = r'''(?P<dp>  # 外文字母单个单个直立排
        D)?'''

    # 消除单字行注解（XD）
    XD_infix = r'''(?P<cx>  # 后面的文字不消除单字行
        !)?'''

# -*- coding: utf-8 -*-

from ._global import _f, color

"=========================================版面控制类=========================================="

class LayoutPatterns:
    # 版心注解（BX）
    BX_infix = _f(r'''
        {fontset}  # 字号、字体
        (?P<ys>  # 文字颜色
            {_r[color]})?,
        (?P<bg>  # 版心高
            {_r[length]})。
        (?P<bk>  # 版心宽
            {_r[length]}),
        (?P<hj>  # 行距
            {_r[length]})
        (?P<sp>!?)  # 竖排
        (?P<bj>B?)  # 指定不拉行距
        (?P<db>D?)  # 表明页码和书眉相互独立，互不影响
        (?:C
            (?P<cg>\d+(?:\.\d+)?mm)。  # 成品尺寸高
            (?P<ck>\d+(?:\.\d+)?mm)  # 成品尺寸宽
            ,(?P<jz>A)?  # 版心居中排
            (?P<cy>S?\d+(?:\.\d+)?mm)  # 上空或下空尺寸
            ,(?P<cx>Z?\d+(?:\.\d+)?mm)  # 订口或切口尺寸
            ,(?P<cc>\d+(?:\.\d+)?mm)  # 出血尺寸
            ,(?P<qf>Q)?  # 区分左右页
            (?P<qd>F)?  # 起始页为单页
        )?
    ''')

    # 彩色注解（CS）
    CS_infix = color.replace('@', r'''
        (?P<ss>  # 设置颜色对象，缺省表示设置字符颜色
            X|  # 设置框线颜色
            D)?  # 设置底纹颜色
    ''') + r'?'

    # 始点注解（SD）
    SD_infix = _f(r'''(?:
        (?P<xp>X)|  # 将本注解前所排的内容先写入磁盘文件中，然后从当前位置继续排
        (?P<dy>  # 始点垂直位置
            {_r[lines]})?
        (?:,(?P<dx>  # 始点水平位置
            {_r[length]}))?
        (?P<xf>;N)?  # 按新方法计算排版的位置
    )?''')

    # 段首缩进注解（SJ）
    SJ_infix = _f(r'''(?:
        (?P<zk>  # 缩进单位字号
            {_r[size]})
        (?:。(?P<zs>[1-9]|10))?  # 缩进字数
        |(?:J(?P<sk>  # 缩进距离值
            {_r[length]}))
    )?''')

    # 上齐注解（SQ）
    # 整体注解（ZT）
    SQ_infix = ZT_prefix = _f(r'''
        (?P<gd>  # 高度
            {_r[lines]})?''')

    # 数字注解（SZ）
    SZ_infix = r'''(?P<sp>  # 竖排时数字排法
        H|  # 数字横向连排，但数字不能多于3位
        DB?  # 数字单个单个直立排，B：数字不能拆行
    )?'''

    # 外文竖排（WP）
    WP_infix = r'''(?P<dp>  # 外文字母单个单个直立排
        D)?'''

    # 消除单字行注解（XD）
    XD_infix = r'''(?P<cx>  # 后面的文字不消除单字行
        !)?'''

# -*- coding: utf-8 -*- # 版心注解（BX） {fontset}  # 字号、字体         (?P<ys>  # 文字颜色             {_r[color]})?,         (?P<bg>  # 版心高             {_r[length]})。         (?P<bk>  # 版心宽             {_r[length]}),         (?P<hj>  # 行距             {_r[length]})         (?P<sp>!?)  # 竖排         (?P<bj>B?)  # 指定不拉行距         (?P<db>D?)  # 表明页码和书眉相互独立，互不影响         (?:C             (?P<cg>\d+(?:\.\d+)?mm)。  # 成品尺寸高             (?P<ck>\d+(?:\.\d+)?mm)  # 成品尺寸宽             ,(?P<jz>A)?  # 版心居中排             (?P<cy>S?\d+(?:\.\d+)?mm)  # 上空或下空尺寸             ,(?P<cx>Z?\d+(?:\.\d+)?mm)  # 订口或切口尺寸             ,(?P<cc>\d+(?:\.\d+)?mm)  # 出血尺寸             ,(?P<qf>Q)?  # 区分左右页             (?P<qd>F)?  # 起始页为单页         )? # 彩色注解（CS） (?P<ss>  # 设置颜色对象，缺省表示设置字符颜色             X|  # 设置框线颜色             D)?  # 设置底纹颜色 # 始点注解（SD） (?:         (?P<xp>X)|  # 将本注解前所排的内容先写入磁盘文件中，然后从当前位置继续排         (?P<dy>  # 始点垂直位置             {_r[lines]})?         (?:,(?P<dx>  # 始点水平位置             {_r[length]}))?         (?P<xf>;N)?  # 按新方法计算排版的位置     )? # 段首缩进注解（SJ） (?:         (?P<zk>  # 缩进单位字号             {_r[size]})         (?:。(?P<zs>[1-9]|10))?  # 缩进字数         |(?:J(?P<sk>  # 缩进距离值             {_r[length]}))     )? # 上齐注解（SQ） # 整体注解（ZT） (?P<gd>  # 高度             {_r[lines]})? # 数字注解（SZ） (?P<sp>  # 竖排时数字排法         H|  # 数字横向连排，但数字不能多于3位         DB?  # 数字单个单个直立排，B：数字不能拆行     )? # 外文竖排（WP） (?P<dp>  # 外文字母单个单个直立排         D)? # 消除单字行注解（XD） (?P<cx>  # 后面的文字不消除单字行         !)?