motion-prime 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +6 -14
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/ROADMAP.md +9 -4
- data/doc/code/getting_started.rb +1 -2
- data/doc/code/screens.rb +54 -0
- data/doc/docs/getting_started.html +27 -6
- data/doc/docs/screens.html +166 -0
- data/files/Gemfile +1 -1
- data/files/Gemfile.lock +64 -0
- data/files/app/environment.rb +10 -0
- data/files/app/styles/sidebar.rb +3 -10
- data/files/resources/images/menu_button.png +0 -0
- data/files/resources/images/menu_button@2x.png +0 -0
- data/motion-prime/app_delegate.rb +19 -0
- data/motion-prime/core_ext/kernel.rb +4 -0
- data/motion-prime/elements/_content_text_mixin.rb +23 -11
- data/motion-prime/elements/_text_mixin.rb +54 -0
- data/motion-prime/elements/base_element.rb +19 -14
- data/motion-prime/elements/draw.rb +22 -1
- data/motion-prime/elements/draw/_draw_background_mixin.rb +28 -28
- data/motion-prime/elements/draw/image.rb +67 -48
- data/motion-prime/elements/draw/label.rb +59 -49
- data/motion-prime/elements/draw/view.rb +5 -3
- data/motion-prime/helpers/has_style_chain_builder.rb +1 -3
- data/motion-prime/models/association_collection.rb +8 -0
- data/motion-prime/models/finder.rb +8 -0
- data/motion-prime/mp.rb +4 -0
- data/motion-prime/screens/_navigation_mixin.rb +4 -0
- data/motion-prime/screens/base_screen.rb +7 -0
- data/motion-prime/screens/sidebar_container_screen.rb +2 -2
- data/motion-prime/sections/_cell_section_mixin.rb +44 -5
- data/motion-prime/sections/_draw_section_mixin.rb +120 -0
- data/motion-prime/sections/base_section.rb +29 -24
- data/motion-prime/sections/form.rb +48 -65
- data/motion-prime/sections/form/base_field_section.rb +2 -2
- data/motion-prime/sections/table.rb +143 -82
- data/motion-prime/sections/table/table_delegate.rb +48 -0
- data/motion-prime/styles/form.rb +1 -1
- data/motion-prime/support/mp_cell_with_section.rb +6 -2
- data/motion-prime/support/mp_view_with_section.rb +1 -1
- data/motion-prime/version.rb +1 -1
- data/motion-prime/views/_frame_calculator_mixin.rb +4 -8
- data/motion-prime/views/layout.rb +1 -0
- data/motion-prime/views/view_styler.rb +3 -12
- metadata +34 -26
- data/motion-prime/sections/_draw_mixin.rb +0 -66
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NDJkY2JmMzAzMWFmY2QyODM0Yzg1ODllMjRmNDY2MWIzMTk5MDRlMDI5NWQ1
|
10
|
-
NTIwZmJmYWE5Y2U2NzZjNWM3NGUwMTVkNDM0YzAyYzNiZjNlMDVkYmUwZGEw
|
11
|
-
NTkxNWJlY2U5ODM4NTIyNWNhN2I2M2UzZTRiYmYyMDllYWM0NDc=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NTU5YzUwZmUwYWVhYWNiYzc0YWIzOGU4NzMxMDE4NGJkMjUyN2QxZjBkMGY3
|
14
|
-
ZWJjMmMwN2E4YmZkMGM0YWZkZWI0NTBlYzIzYmEyM2NmNjVmNTJiNWUyZjZh
|
15
|
-
M2Y0Yjk2MjYzNGI1NDkwZjU0NjNlYTMyNzUyMjY1YzQ4OTZkOTc=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ed397d9e2fd731cd20575ece1c67b150915711c3
|
4
|
+
data.tar.gz: d35b535aafc6ccfc39b317ab15387b0d58032edd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bf28b8ece9d90c0703b94b1763d0fb7ff61f7a6f7688d8355634ed0f76af2528e08e07f7e1d185824d8596715e251dc479fc99cca1e1f04114b0466f1d2b7c64
|
7
|
+
data.tar.gz: 35f315439efb220eb33d6c63def92b87dda91d52713abad7ad573956cc00a514de7d023aba6113282c07098f1a0f509b7094717386d1de22b98f197c63e2dabe
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/ROADMAP.md
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
=== 0.5.0
|
2
|
-
* rename support/dm_* to support/mp_*
|
3
2
|
* "id" attribute should always be added to model by default
|
4
|
-
*
|
5
|
-
*
|
3
|
+
* fix issue when draw element without table section in parent will not be drawn.
|
4
|
+
* Ability to pass "locals" while opening screen.
|
5
|
+
* navigation: true by default for screen initialization.
|
6
|
+
* separate screen.open_screen to screen.open_child and screen.open_modal.
|
7
|
+
* use model.assign_attributes instead of model.fetch_with_attributes and call it on initialization.
|
8
|
+
* separate sync#update and sync#fetch
|
6
9
|
|
7
10
|
=== 0.6.0
|
8
11
|
* add testing framework
|
9
12
|
* add auth backends to ApiClient: password auth and facebook auth
|
10
13
|
|
11
14
|
=== 0.7.0
|
12
|
-
* add sections/screens/models generator
|
15
|
+
* add sections/screens/models generator
|
16
|
+
* add DSL for ViewStyles#setValue conditions
|
17
|
+
* add auto-symbol-value for Prime::Config.color items
|
data/doc/code/getting_started.rb
CHANGED
@@ -20,8 +20,7 @@ end
|
|
20
20
|
|
21
21
|
# **3. Create the main screen.**
|
22
22
|
#
|
23
|
-
# You should rewrite the `render` method, which will be runned after opening screen.
|
24
|
-
# Note: you must always pass `screen` option, which points to screen to render
|
23
|
+
# You should rewrite the `render` method, which will be runned after first opening screen.
|
25
24
|
|
26
25
|
class MainScreen < Prime::BaseScreen
|
27
26
|
title 'Main screen'
|
data/doc/code/screens.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# ** Render the screen. **
|
2
|
+
#
|
3
|
+
# You should rewrite the `render` method of Prime::BaseScreen, which will be runned after first opening screen.
|
4
|
+
|
5
|
+
class MainScreen < Prime::BaseScreen
|
6
|
+
def render
|
7
|
+
@main_section = MyProfileSection.new(screen: self, model: User.first)
|
8
|
+
@main_section.render
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# ** Set screen's title **
|
13
|
+
#
|
14
|
+
# This title will be used in screen's navigation controller and will be shown there.
|
15
|
+
|
16
|
+
class MainScreen < Prime::BaseScreen
|
17
|
+
title 'Main screen'
|
18
|
+
end
|
19
|
+
|
20
|
+
# Also, you can pass block to define screen's title
|
21
|
+
|
22
|
+
class MainScreen < Prime::BaseScreen
|
23
|
+
title { params[:title] }
|
24
|
+
end
|
25
|
+
|
26
|
+
# ** Initialize screen. **
|
27
|
+
#
|
28
|
+
# Available options:
|
29
|
+
# * :navigation. when this options is true, screen will be created with navigation support, like left and right buttons and title.
|
30
|
+
# This option is false by default.
|
31
|
+
|
32
|
+
screen = MainScreen.new(navigation: true)
|
33
|
+
|
34
|
+
# ** Open screen: using app delegate. **
|
35
|
+
|
36
|
+
# Opening screen using app delegate is the most basic way, you would do it at least on app load.
|
37
|
+
#
|
38
|
+
# Available options:
|
39
|
+
# * :root. when this option is true, screen will not be in content controller and will create new root screen.
|
40
|
+
# You can use root: true when you have already opened screen with sidebar, and you want to open new screen without sidebar.
|
41
|
+
# This option is false by default if you already have root screen and true if not.
|
42
|
+
#
|
43
|
+
# * :sidebar. send Prime::BaseScreen instance to this option if you want to create root screen with sidebar.
|
44
|
+
# value of this options will be used as sidebar controller.
|
45
|
+
|
46
|
+
app_delegate.open_screen MainScreen.new(navigation: true), sidebar: MySidebar.new
|
47
|
+
|
48
|
+
# ** Open screen: using parent screen. **
|
49
|
+
|
50
|
+
# Opening screen using parent screen is usefull if you want to create inherited screen.
|
51
|
+
# Parent screen should have been initialized with navigation support.
|
52
|
+
|
53
|
+
screen.open_screen AnotherScreen.new(navigation: true)
|
54
|
+
|
@@ -11,6 +11,27 @@
|
|
11
11
|
<div id="container">
|
12
12
|
<div id="background"></div>
|
13
13
|
|
14
|
+
<ul id="jump_to">
|
15
|
+
<li>
|
16
|
+
<a class="large" href="javascript:void(0);">Jump To …</a>
|
17
|
+
<a class="small" href="javascript:void(0);">+</a>
|
18
|
+
<div id="jump_wrapper">
|
19
|
+
<div id="jump_page">
|
20
|
+
|
21
|
+
|
22
|
+
<a class="source" href="getting_started.html">
|
23
|
+
getting_started.rb
|
24
|
+
</a>
|
25
|
+
|
26
|
+
|
27
|
+
<a class="source" href="screens.html">
|
28
|
+
screens.rb
|
29
|
+
</a>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
</li>
|
33
|
+
</ul>
|
34
|
+
|
14
35
|
<ul class="sections">
|
15
36
|
|
16
37
|
<li id="title">
|
@@ -98,7 +119,7 @@ Note: you should always use AppDelegate class name.</p>
|
|
98
119
|
<a class="pilcrow" href="#section-5">¶</a>
|
99
120
|
</div>
|
100
121
|
<p><strong>3. Create the main screen.</strong></p>
|
101
|
-
<p>You should rewrite the <code>render</code> method, which will be runned after opening screen.</p>
|
122
|
+
<p>You should rewrite the <code>render</code> method, which will be runned after first opening screen.</p>
|
102
123
|
|
103
124
|
</div>
|
104
125
|
|
@@ -106,8 +127,8 @@ Note: you should always use AppDelegate class name.</p>
|
|
106
127
|
title <span class="string">'Main screen'</span>
|
107
128
|
|
108
129
|
<span class="function"><span class="keyword">def</span> <span class="title">render</span></span>
|
109
|
-
<span class="variable">@main_section</span> = <span class="constant">MyProfileSection</span>.new(<span class="symbol">model:</span> <span class="constant">User</span>.first)
|
110
|
-
<span class="variable">@main_section</span>.render
|
130
|
+
<span class="variable">@main_section</span> = <span class="constant">MyProfileSection</span>.new(<span class="symbol">screen:</span> <span class="keyword">self</span>, <span class="symbol">model:</span> <span class="constant">User</span>.first)
|
131
|
+
<span class="variable">@main_section</span>.render
|
111
132
|
<span class="keyword">end</span>
|
112
133
|
<span class="keyword">end</span></pre></div></div>
|
113
134
|
|
@@ -122,7 +143,7 @@ Note: you should always use AppDelegate class name.</p>
|
|
122
143
|
</div>
|
123
144
|
<p><strong>4. Create your first section.</strong></p>
|
124
145
|
<p>"Section" is something like helper, which contains "Elements".</p>
|
125
|
-
<p>Each element will be added to the parent screen when you run <code>section.render
|
146
|
+
<p>Each element will be added to the parent screen when you run <code>section.render</code></p>
|
126
147
|
|
127
148
|
</div>
|
128
149
|
|
@@ -141,9 +162,9 @@ Note: you should always use AppDelegate class name.</p>
|
|
141
162
|
<a class="pilcrow" href="#section-7">¶</a>
|
142
163
|
</div>
|
143
164
|
<p><strong>5. Create your first stylesheet file.</strong></p>
|
144
|
-
<p>Styles will be applied to each element in section.
|
165
|
+
<p>Styles will be applied to each element in section.
|
145
166
|
The simplest rule by default is: <code>:section-name_:element-name</code>.</p>
|
146
|
-
<p>E.g. if you have 'MyProfileSection' (the name for section by default will be - <code>my_profile</code>)
|
167
|
+
<p>E.g. if you have 'MyProfileSection' (the name for section by default will be - <code>my_profile</code>)
|
147
168
|
and 'title' element, then you should use <code>my_profile_title</code> style name.</p>
|
148
169
|
|
149
170
|
</div>
|
@@ -0,0 +1,166 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<title>screens.rb</title>
|
6
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
7
|
+
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
|
8
|
+
<link rel="stylesheet" media="all" href="docco.css" />
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<div id="container">
|
12
|
+
<div id="background"></div>
|
13
|
+
|
14
|
+
<ul id="jump_to">
|
15
|
+
<li>
|
16
|
+
<a class="large" href="javascript:void(0);">Jump To …</a>
|
17
|
+
<a class="small" href="javascript:void(0);">+</a>
|
18
|
+
<div id="jump_wrapper">
|
19
|
+
<div id="jump_page">
|
20
|
+
|
21
|
+
|
22
|
+
<a class="source" href="getting_started.html">
|
23
|
+
getting_started.rb
|
24
|
+
</a>
|
25
|
+
|
26
|
+
|
27
|
+
<a class="source" href="screens.html">
|
28
|
+
screens.rb
|
29
|
+
</a>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
</li>
|
33
|
+
</ul>
|
34
|
+
|
35
|
+
<ul class="sections">
|
36
|
+
|
37
|
+
<li id="title">
|
38
|
+
<div class="annotation">
|
39
|
+
<h1>screens.rb</h1>
|
40
|
+
</div>
|
41
|
+
</li>
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
<li id="section-1">
|
46
|
+
<div class="annotation">
|
47
|
+
|
48
|
+
<div class="pilwrap ">
|
49
|
+
<a class="pilcrow" href="#section-1">¶</a>
|
50
|
+
</div>
|
51
|
+
<p><strong> Render the screen. </strong></p>
|
52
|
+
<p>You should rewrite the <code>render</code> method of Prime::BaseScreen, which will be runned after first opening screen.</p>
|
53
|
+
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<div class="content"><div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">MainScreen</span> <span class="inheritance">< <span class="parent">Prime::BaseScreen</span></span></span>
|
57
|
+
<span class="function"><span class="keyword">def</span> <span class="title">render</span></span>
|
58
|
+
<span class="variable">@main_section</span> = <span class="constant">MyProfileSection</span>.new(<span class="symbol">screen:</span> <span class="keyword">self</span>, <span class="symbol">model:</span> <span class="constant">User</span>.first)
|
59
|
+
<span class="variable">@main_section</span>.render
|
60
|
+
<span class="keyword">end</span>
|
61
|
+
<span class="keyword">end</span></pre></div></div>
|
62
|
+
|
63
|
+
</li>
|
64
|
+
|
65
|
+
|
66
|
+
<li id="section-2">
|
67
|
+
<div class="annotation">
|
68
|
+
|
69
|
+
<div class="pilwrap ">
|
70
|
+
<a class="pilcrow" href="#section-2">¶</a>
|
71
|
+
</div>
|
72
|
+
<p><strong> Set screen's title </strong></p>
|
73
|
+
<p>This title will be used in screen's navigation controller and will be shown there.</p>
|
74
|
+
|
75
|
+
</div>
|
76
|
+
|
77
|
+
<div class="content"><div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">MainScreen</span> <span class="inheritance">< <span class="parent">Prime::BaseScreen</span></span></span>
|
78
|
+
title <span class="string">'Main screen'</span>
|
79
|
+
<span class="keyword">end</span></pre></div></div>
|
80
|
+
|
81
|
+
</li>
|
82
|
+
|
83
|
+
|
84
|
+
<li id="section-3">
|
85
|
+
<div class="annotation">
|
86
|
+
|
87
|
+
<div class="pilwrap ">
|
88
|
+
<a class="pilcrow" href="#section-3">¶</a>
|
89
|
+
</div>
|
90
|
+
<p>Also, you can pass block to define screen's title</p>
|
91
|
+
|
92
|
+
</div>
|
93
|
+
|
94
|
+
<div class="content"><div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">MainScreen</span> <span class="inheritance">< <span class="parent">Prime::BaseScreen</span></span></span>
|
95
|
+
title { params[<span class="symbol">:title</span>] }
|
96
|
+
<span class="keyword">end</span></pre></div></div>
|
97
|
+
|
98
|
+
</li>
|
99
|
+
|
100
|
+
|
101
|
+
<li id="section-4">
|
102
|
+
<div class="annotation">
|
103
|
+
|
104
|
+
<div class="pilwrap ">
|
105
|
+
<a class="pilcrow" href="#section-4">¶</a>
|
106
|
+
</div>
|
107
|
+
<p><strong> Initialize screen. </strong></p>
|
108
|
+
<p>Available options:</p>
|
109
|
+
<ul>
|
110
|
+
<li>:navigation. when this options is true, screen will be created with navigation support, like left and right buttons and title.
|
111
|
+
This option is false by default.</li>
|
112
|
+
</ul>
|
113
|
+
|
114
|
+
</div>
|
115
|
+
|
116
|
+
<div class="content"><div class='highlight'><pre>screen = <span class="constant">MainScreen</span>.new(<span class="symbol">navigation:</span> <span class="keyword">true</span>)</pre></div></div>
|
117
|
+
|
118
|
+
</li>
|
119
|
+
|
120
|
+
|
121
|
+
<li id="section-5">
|
122
|
+
<div class="annotation">
|
123
|
+
|
124
|
+
<div class="pilwrap ">
|
125
|
+
<a class="pilcrow" href="#section-5">¶</a>
|
126
|
+
</div>
|
127
|
+
<p><strong> Open screen: using app delegate. </strong></p>
|
128
|
+
<p>Opening screen using app delegate is the most basic way, you would do it at least on app load.</p>
|
129
|
+
<p>Available options:</p>
|
130
|
+
<ul>
|
131
|
+
<li><p>:root. when this option is true, screen will not be in content controller and will create new root screen.
|
132
|
+
You can use root: true when you have already opened screen with sidebar, and you want to open new screen without sidebar.
|
133
|
+
This option is false by default if you already have root screen and true if not.</p>
|
134
|
+
</li>
|
135
|
+
<li><p>:sidebar. send Prime::BaseScreen instance to this option if you want to create root screen with sidebar.
|
136
|
+
value of this options will be used as sidebar controller.</p>
|
137
|
+
</li>
|
138
|
+
</ul>
|
139
|
+
|
140
|
+
</div>
|
141
|
+
|
142
|
+
<div class="content"><div class='highlight'><pre>app_delegate.open_screen <span class="constant">MainScreen</span>.new(<span class="symbol">navigation:</span> <span class="keyword">true</span>), <span class="symbol">sidebar:</span> <span class="constant">MySidebar</span>.new</pre></div></div>
|
143
|
+
|
144
|
+
</li>
|
145
|
+
|
146
|
+
|
147
|
+
<li id="section-6">
|
148
|
+
<div class="annotation">
|
149
|
+
|
150
|
+
<div class="pilwrap ">
|
151
|
+
<a class="pilcrow" href="#section-6">¶</a>
|
152
|
+
</div>
|
153
|
+
<p><strong> Open screen: using parent screen. </strong></p>
|
154
|
+
<p>Opening screen using parent screen is usefull if you want to create inherited screen.
|
155
|
+
Parent screen should have been initialized with navigation support.</p>
|
156
|
+
|
157
|
+
</div>
|
158
|
+
|
159
|
+
<div class="content"><div class='highlight'><pre>screen.open_screen <span class="constant">AnotherScreen</span>.new(<span class="symbol">navigation:</span> <span class="keyword">true</span>)</pre></div></div>
|
160
|
+
|
161
|
+
</li>
|
162
|
+
|
163
|
+
</ul>
|
164
|
+
</div>
|
165
|
+
</body>
|
166
|
+
</html>
|
data/files/Gemfile
CHANGED
data/files/Gemfile.lock
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (3.2.16)
|
5
|
+
i18n (~> 0.6, >= 0.6.4)
|
6
|
+
multi_json (~> 1.0)
|
7
|
+
bubble-wrap (1.3.0)
|
8
|
+
claide (0.4.0)
|
9
|
+
cocoapods (0.28.0)
|
10
|
+
activesupport (>= 3.2.15, < 4)
|
11
|
+
claide (~> 0.4.0)
|
12
|
+
cocoapods-core (= 0.28.0)
|
13
|
+
cocoapods-downloader (~> 0.2.0)
|
14
|
+
colored (~> 1.2)
|
15
|
+
escape (~> 0.0.4)
|
16
|
+
json_pure (~> 1.8)
|
17
|
+
open4 (~> 1.3)
|
18
|
+
xcodeproj (~> 0.14.1)
|
19
|
+
cocoapods-core (0.28.0)
|
20
|
+
activesupport (>= 3.2.15, < 4)
|
21
|
+
fuzzy_match (~> 2.0.4)
|
22
|
+
json (~> 1.8)
|
23
|
+
nap (~> 0.5)
|
24
|
+
cocoapods-downloader (0.2.0)
|
25
|
+
colored (1.2)
|
26
|
+
escape (0.0.4)
|
27
|
+
fuzzy_match (2.0.4)
|
28
|
+
i18n (0.6.9)
|
29
|
+
json (1.8.1)
|
30
|
+
json_pure (1.8.1)
|
31
|
+
methadone (1.3.1)
|
32
|
+
bundler
|
33
|
+
motion-cocoapods (1.4.0)
|
34
|
+
cocoapods (>= 0.26.2)
|
35
|
+
motion-prime (0.4.3)
|
36
|
+
bubble-wrap
|
37
|
+
cocoapods
|
38
|
+
methadone
|
39
|
+
motion-cocoapods
|
40
|
+
motion-require
|
41
|
+
motion-support
|
42
|
+
sugarcube
|
43
|
+
motion-require (0.0.7)
|
44
|
+
motion-support (0.2.5)
|
45
|
+
motion-require (>= 0.0.6)
|
46
|
+
multi_json (1.8.2)
|
47
|
+
nap (0.6.0)
|
48
|
+
open4 (1.3.0)
|
49
|
+
rake (10.1.1)
|
50
|
+
sugarcube (1.3.11)
|
51
|
+
xcodeproj (0.14.1)
|
52
|
+
activesupport (~> 3.0)
|
53
|
+
colored (~> 1.2)
|
54
|
+
rake
|
55
|
+
|
56
|
+
PLATFORMS
|
57
|
+
ruby
|
58
|
+
|
59
|
+
DEPENDENCIES
|
60
|
+
bubble-wrap (~> 1.3.0)
|
61
|
+
motion-cocoapods (~> 1.4.0)
|
62
|
+
motion-prime (~> 0.4.3)
|
63
|
+
motion-support (~> 0.2.4)
|
64
|
+
sugarcube (~> 1.3.7)
|