Skip to content

Commit 294f234

Browse files
committed
fixes #625
1 parent 3b9f27f commit 294f234

File tree

4 files changed

+83
-95
lines changed

4 files changed

+83
-95
lines changed

fastcore/basics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,6 +1167,6 @@ def str2bool(s):
11671167
if not isinstance(s,str): return bool(s)
11681168
if not s: return False
11691169
s = s.lower()
1170-
if s in ('y', 'yes', 't', 'true', 'on', '1'): return 1
1171-
elif s in ('n', 'no', 'f', 'false', 'off', '0'): return 0
1170+
if s in ('y', 'yes', 't', 'true', 'on', '1'): return True
1171+
elif s in ('n', 'no', 'f', 'false', 'off', '0'): return False
11721172
else: raise ValueError()

fastcore/xml.py

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/11_xml.ipynb.
44

55
# %% auto 0
6-
__all__ = ['voids', 'FT', 'attrmap', 'valmap', 'ft', 'Html', 'Safe', 'to_xml', 'highlight', 'showtags', 'Head', 'Title', 'Meta',
6+
__all__ = ['voids', 'attrmap', 'valmap', 'FT', 'ft', 'Html', 'Safe', 'to_xml', 'highlight', 'showtags', 'Head', 'Title', 'Meta',
77
'Link', 'Style', 'Body', 'Pre', 'Code', 'Div', 'Span', 'P', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'Strong',
88
'Em', 'B', 'I', 'U', 'S', 'Strike', 'Sub', 'Sup', 'Hr', 'Br', 'Img', 'A', 'Nav', 'Ul', 'Ol', 'Li', 'Dl',
99
'Dt', 'Dd', 'Table', 'Thead', 'Tbody', 'Tfoot', 'Tr', 'Th', 'Td', 'Caption', 'Col', 'Colgroup', 'Form',
@@ -22,33 +22,6 @@
2222
from functools import partial
2323
from html import escape
2424

25-
# %% ../nbs/11_xml.ipynb
26-
class FT:
27-
"A 'Fast Tag' structure, containing `tag`,`children`,and `attrs`"
28-
def __init__(self, tag:str, cs:tuple, attrs:dict=None, void_=False, **kwargs):
29-
assert isinstance(cs, tuple)
30-
self.tag,self.children,self.attrs,self.void_ = tag,cs,attrs,void_
31-
32-
def __setattr__(self, k, v):
33-
if k.startswith('__') or k in ('tag','children','attrs','void_'): return super().__setattr__(k,v)
34-
self.attrs[k.lstrip('_').replace('_', '-')] = v
35-
36-
def __getattr__(self, k):
37-
if k.startswith('__'): raise AttributeError(k)
38-
return self.get(k)
39-
40-
@property
41-
def list(self): return [self.tag,self.children,self.attrs]
42-
def get(self, k, default=None): return self.attrs.get(k.lstrip('_').replace('_', '-'), default)
43-
def __repr__(self): return f'{self.tag}({self.children},{self.attrs})'
44-
45-
def __add__(self, b):
46-
self.children = self.children + tuplify(b)
47-
return self
48-
49-
def __getitem__(self, idx): return self.children[idx]
50-
def __iter__(self): return iter(self.children)
51-
5225
# %% ../nbs/11_xml.ipynb
5326
_specials = set('@.-!~:[](){}$%^&*+=|/?<>,`')
5427

@@ -79,6 +52,39 @@ def _preproc(c, kw, attrmap=attrmap, valmap=valmap):
7952
attrs = {attrmap(k.lower()):valmap(v) for k,v in kw.items() if v is not None}
8053
return _flatten_tuple(c),attrs
8154

55+
# %% ../nbs/11_xml.ipynb
56+
class FT:
57+
"A 'Fast Tag' structure, containing `tag`,`children`,and `attrs`"
58+
def __init__(self, tag:str, cs:tuple, attrs:dict=None, void_=False, **kwargs):
59+
assert isinstance(cs, tuple)
60+
self.tag,self.children,self.attrs,self.void_ = tag,cs,attrs,void_
61+
62+
def __setattr__(self, k, v):
63+
if k.startswith('__') or k in ('tag','children','attrs','void_'): return super().__setattr__(k,v)
64+
self.attrs[k.lstrip('_').replace('_', '-')] = v
65+
66+
def __getattr__(self, k):
67+
if k.startswith('__'): raise AttributeError(k)
68+
return self.get(k)
69+
70+
@property
71+
def list(self): return [self.tag,self.children,self.attrs]
72+
def get(self, k, default=None): return self.attrs.get(k.lstrip('_').replace('_', '-'), default)
73+
def __repr__(self): return f'{self.tag}({self.children},{self.attrs})'
74+
75+
def __add__(self, b):
76+
self.children = self.children + tuplify(b)
77+
return self
78+
79+
def __getitem__(self, idx): return self.children[idx]
80+
def __iter__(self): return iter(self.children)
81+
82+
def __call__(self, *c, **kw):
83+
c,kw = _preproc(c,kw)
84+
if c: self = self+c
85+
if kw: self.attrs = {**self.attrs, **kw}
86+
return self
87+
8288
# %% ../nbs/11_xml.ipynb
8389
def ft(tag:str, *c, void_:bool=False, attrmap:callable=attrmap, valmap:callable=valmap, ft_cls=FT, **kw):
8490
"Create an `FT` structure for `to_xml()`"
@@ -177,14 +183,6 @@ def showtags(s):
177183

178184
FT._repr_markdown_ = highlight
179185

180-
# %% ../nbs/11_xml.ipynb
181-
@patch
182-
def __call__(self:FT, *c, **kw):
183-
c,kw = _preproc(c,kw)
184-
if c: self = self+c
185-
if kw: self.attrs = {**self.attrs, **kw}
186-
return self
187-
188186
# %% ../nbs/11_xml.ipynb
189187
def __getattr__(tag):
190188
if tag.startswith('_') or tag[0].islower(): raise AttributeError

nbs/01_basics.ipynb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6367,8 +6367,8 @@
63676367
" if not isinstance(s,str): return bool(s)\n",
63686368
" if not s: return False\n",
63696369
" s = s.lower()\n",
6370-
" if s in ('y', 'yes', 't', 'true', 'on', '1'): return 1\n",
6371-
" elif s in ('n', 'no', 'f', 'false', 'off', '0'): return 0\n",
6370+
" if s in ('y', 'yes', 't', 'true', 'on', '1'): return True\n",
6371+
" elif s in ('n', 'no', 'f', 'false', 'off', '0'): return False\n",
63726372
" else: raise ValueError()"
63736373
]
63746374
},

nbs/11_xml.ipynb

Lines changed: 45 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -52,42 +52,7 @@
5252
{
5353
"cell_type": "code",
5454
"execution_count": null,
55-
"id": "b06c10f6",
56-
"metadata": {},
57-
"outputs": [],
58-
"source": [
59-
"#|export\n",
60-
"class FT:\n",
61-
" \"A 'Fast Tag' structure, containing `tag`,`children`,and `attrs`\"\n",
62-
" def __init__(self, tag:str, cs:tuple, attrs:dict=None, void_=False, **kwargs):\n",
63-
" assert isinstance(cs, tuple)\n",
64-
" self.tag,self.children,self.attrs,self.void_ = tag,cs,attrs,void_\n",
65-
"\n",
66-
" def __setattr__(self, k, v):\n",
67-
" if k.startswith('__') or k in ('tag','children','attrs','void_'): return super().__setattr__(k,v)\n",
68-
" self.attrs[k.lstrip('_').replace('_', '-')] = v\n",
69-
"\n",
70-
" def __getattr__(self, k):\n",
71-
" if k.startswith('__'): raise AttributeError(k)\n",
72-
" return self.get(k)\n",
73-
"\n",
74-
" @property\n",
75-
" def list(self): return [self.tag,self.children,self.attrs]\n",
76-
" def get(self, k, default=None): return self.attrs.get(k.lstrip('_').replace('_', '-'), default)\n",
77-
" def __repr__(self): return f'{self.tag}({self.children},{self.attrs})'\n",
78-
"\n",
79-
" def __add__(self, b):\n",
80-
" self.children = self.children + tuplify(b)\n",
81-
" return self\n",
82-
" \n",
83-
" def __getitem__(self, idx): return self.children[idx]\n",
84-
" def __iter__(self): return iter(self.children)"
85-
]
86-
},
87-
{
88-
"cell_type": "code",
89-
"execution_count": null,
90-
"id": "d6069e01",
55+
"id": "159d3560",
9156
"metadata": {},
9257
"outputs": [],
9358
"source": [
@@ -104,7 +69,7 @@
10469
{
10570
"cell_type": "code",
10671
"execution_count": null,
107-
"id": "9b2adafa",
72+
"id": "6f000a63",
10873
"metadata": {},
10974
"outputs": [],
11075
"source": [
@@ -118,7 +83,7 @@
11883
{
11984
"cell_type": "code",
12085
"execution_count": null,
121-
"id": "b0553dd9",
86+
"id": "ddc7d705",
12287
"metadata": {},
12388
"outputs": [],
12489
"source": [
@@ -135,7 +100,7 @@
135100
{
136101
"cell_type": "code",
137102
"execution_count": null,
138-
"id": "149067dd",
103+
"id": "df5d12c7",
139104
"metadata": {},
140105
"outputs": [],
141106
"source": [
@@ -146,6 +111,47 @@
146111
" return _flatten_tuple(c),attrs"
147112
]
148113
},
114+
{
115+
"cell_type": "code",
116+
"execution_count": null,
117+
"id": "b06c10f6",
118+
"metadata": {},
119+
"outputs": [],
120+
"source": [
121+
"#|export\n",
122+
"class FT:\n",
123+
" \"A 'Fast Tag' structure, containing `tag`,`children`,and `attrs`\"\n",
124+
" def __init__(self, tag:str, cs:tuple, attrs:dict=None, void_=False, **kwargs):\n",
125+
" assert isinstance(cs, tuple)\n",
126+
" self.tag,self.children,self.attrs,self.void_ = tag,cs,attrs,void_\n",
127+
"\n",
128+
" def __setattr__(self, k, v):\n",
129+
" if k.startswith('__') or k in ('tag','children','attrs','void_'): return super().__setattr__(k,v)\n",
130+
" self.attrs[k.lstrip('_').replace('_', '-')] = v\n",
131+
"\n",
132+
" def __getattr__(self, k):\n",
133+
" if k.startswith('__'): raise AttributeError(k)\n",
134+
" return self.get(k)\n",
135+
"\n",
136+
" @property\n",
137+
" def list(self): return [self.tag,self.children,self.attrs]\n",
138+
" def get(self, k, default=None): return self.attrs.get(k.lstrip('_').replace('_', '-'), default)\n",
139+
" def __repr__(self): return f'{self.tag}({self.children},{self.attrs})'\n",
140+
"\n",
141+
" def __add__(self, b):\n",
142+
" self.children = self.children + tuplify(b)\n",
143+
" return self\n",
144+
" \n",
145+
" def __getitem__(self, idx): return self.children[idx]\n",
146+
" def __iter__(self): return iter(self.children)\n",
147+
"\n",
148+
" def __call__(self, *c, **kw):\n",
149+
" c,kw = _preproc(c,kw)\n",
150+
" if c: self = self+c\n",
151+
" if kw: self.attrs = {**self.attrs, **kw}\n",
152+
" return self"
153+
]
154+
},
149155
{
150156
"cell_type": "code",
151157
"execution_count": null,
@@ -576,22 +582,6 @@
576582
"FT._repr_markdown_ = highlight"
577583
]
578584
},
579-
{
580-
"cell_type": "code",
581-
"execution_count": null,
582-
"id": "204c3900",
583-
"metadata": {},
584-
"outputs": [],
585-
"source": [
586-
"#|export\n",
587-
"@patch\n",
588-
"def __call__(self:FT, *c, **kw):\n",
589-
" c,kw = _preproc(c,kw)\n",
590-
" if c: self = self+c\n",
591-
" if kw: self.attrs = {**self.attrs, **kw}\n",
592-
" return self"
593-
]
594-
},
595585
{
596586
"cell_type": "markdown",
597587
"id": "32b75e87",

0 commit comments

Comments
 (0)