Changeset 1049


Ignore:
Timestamp:
09/17/20 11:58:14 (4 years ago)
Author:
dubos
Message:

devel/DySL : match whole keywords with "KEY is in CODE"

Location:
codes/icosagcm/devel/DySL
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/DySL/jinja

    r941 r1049  
    22from sys import argv 
    33from textwrap import dedent 
     4import re 
    45from re import search # regular expressions 
    56 
     
    1011    else: 
    1112       print (3*indent)*' ' + line 
     13 
     14# Jinja2 custom tests 
     15# https://jinja.palletsprojects.com/en/2.10.x/templates/ 
     16 
     17def is_keyword(word, txt): 
     18    pattern=r'\b%s\b'%word 
     19    match = search(pattern, txt) 
     20    return True if match else False 
    1221         
    1322env=Environment(loader=FileSystemLoader('.')) 
     23env.tests['in'] = is_keyword 
     24 
    1425tpl=env.get_template(argv[1]) 
    1526source = tpl.render() 
     
    4152    else: 
    4253        pretty(line,indent) 
     54 
     55# print is_keyword('LE','LE_DE') 
  • codes/icosagcm/devel/DySL/macros.jin

    r941 r1049  
    2525 
    2626{% macro cdef(code, key,val) %}  
    27 {{ define(key,val) if key in code }} 
     27{{ define(key,val) if key is in code }} 
    2828{%- endmacro %} 
    2929 
    3030{% macro cundef(code, keys) %}  
    3131{% for key in keys %} 
    32 {{ undef(key) if key in code }} 
     32{{ undef(key) if key is in code }} 
    3333{%- endfor %} 
    3434{%- endmacro %} 
  • codes/icosagcm/devel/DySL/unstructured/macros.jin

    r941 r1049  
    127127{% macro get_edges(thecode, mesh,degree) %} 
    128128{% for iedge in range(1,degree+1) %}  
    129 {{ 'edge%d = %s_edge(%d,ij)'%(iedge,mesh,iedge) if 'EDGE' in thecode }}  
    130 {% endfor %} 
    131 {% for iedge in range(1,degree+1) %}  
    132 {{ 'le_de%d = le_de(edge%d)'%(iedge,iedge) if 'LE_DE' in thecode }}       
    133 {% endfor %} 
    134 {% for iedge in range(1,degree+1) %}  
    135 {{ 'sign%d = %s_ne(%d,ij)'%(iedge,mesh,iedge) if 'SIGN' in thecode }}    
    136 {% endfor %} 
    137 {% for iedge in range(1,degree+1) %}  
    138 {{ 'ij_up%d = up(edge%d)'%(iedge,iedge) if 'VERTEX1' in thecode }} 
    139 {% endfor %} 
    140 {% for iedge in range(1,degree+1) %}  
    141 {{ 'ij_down%d = down(edge%d)'%(iedge,iedge) if 'VERTEX2' in thecode }} 
     129{{ 'edge%d = %s_edge(%d,ij)'%(iedge,mesh,iedge) if 'EDGE' is in thecode }}  
     130{% endfor %} 
     131{% for iedge in range(1,degree+1) %}  
     132{{ 'le_de%d = le_de(edge%d)'%(iedge,iedge) if 'LE_DE' is in thecode }}       
     133{% endfor %} 
     134{% for iedge in range(1,degree+1) %}  
     135{{ 'de%d = de(edge%d)'%(iedge,iedge) if 'DE' is in thecode }}       
     136{% endfor %} 
     137{% for iedge in range(1,degree+1) %}  
     138{{ 'le%d = le(edge%d)'%(iedge,iedge) if 'LE' is in thecode }} 
     139{% endfor %} 
     140{% for iedge in range(1,degree+1) %}  
     141{{ 'sign%d = %s_ne(%d,ij)'%(iedge,mesh,iedge) if 'SIGN' is in(thecode) }}    
     142{% endfor %} 
     143{% for iedge in range(1,degree+1) %}  
     144{{ 'ij_up%d = up(edge%d)'%(iedge,iedge) if 'VERTEX1' is in thecode }} 
     145{% endfor %} 
     146{% for iedge in range(1,degree+1) %}  
     147{{ 'ij_down%d = down(edge%d)'%(iedge,iedge) if 'VERTEX2' is in thecode }} 
    142148{% endfor %} 
    143149{% endmacro %} 
     
    303309END DO 
    304310!$OMP END DO 
    305 {{ cundef(thecode, ('EDGE','LE_DE','SIGN','CELL1','CELL2','VERTEX1','VERTEX2') ) }} 
     311{{ cundef(thecode, ('EDGE','LE_DE','LE','DE','SIGN','CELL1','CELL2','VERTEX1','VERTEX2') ) }} 
    306312{%- endmacro %} 
    307313 
     
    314320{{ cdef(thecode, 'SIGN', 'sign%d'%iedge) }} 
    315321{{ cdef(thecode, 'LE_DE', 'le_de%d'%iedge) }} 
     322{{ cdef(thecode, 'DE', 'de%d'%iedge) }} 
     323{{ cdef(thecode, 'LE', 'le%d'%iedge) }} 
    316324{{ cdef(thecode, 'VERTEX1', 'l,ij_up%d'%iedge) }} 
    317325{{ cdef(thecode, 'VERTEX2', 'l,ij_down%d'%iedge) }} 
     
    322330{{ cdef(thecode, 'SIGN', mesh + '_ne(iedge,ij)') }} 
    323331{{ cdef(thecode, 'LE_DE', 'le_de(edge)') }} 
     332{{ cdef(thecode, 'DE', 'de(edge)') }} 
     333{{ cdef(thecode, 'LE', 'le(edge)') }} 
    324334{{ cdef(thecode, 'VERTEX1', 'l,ij_up') }} 
    325335{{ cdef(thecode, 'VERTEX2', 'l,ij_down') }} 
     
    331341END DO 
    332342{% endif %} 
    333 {{ cundef(thecode, ('EDGE', 'SIGN', 'LE_DE', 'VERTEX1', 'VERTEX2') ) }} 
     343{{ cundef(thecode, ('EDGE', 'SIGN', 'LE_DE', 'LE', 'DE', 'VERTEX1', 'VERTEX2') ) }} 
    334344{%- endmacro %} 
    335345 
Note: See TracChangeset for help on using the changeset viewer.