stud 0.0.13 → 0.0.14

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.
@@ -0,0 +1,236 @@
1
+ grammar StudTimeFormat
2
+ rule format
3
+ (time / text)* {
4
+ def compile
5
+ return %Q<lambda do |t|
6
+ return [
7
+ #{elements.collect(&:compile).join(",\n ")}
8
+ ].join("")
9
+ end>
10
+ end
11
+ }
12
+ end
13
+
14
+ rule time
15
+ (
16
+ era
17
+ / century_of_era
18
+ / year_of_era
19
+ / weekyear
20
+ / week_of_weekyear
21
+ / day_of_week_number
22
+ / day_of_week_text
23
+ / year
24
+ / day_of_year
25
+ / month_of_year
26
+ / day_of_month
27
+ / halfday_of_day
28
+ / hour_of_halfday
29
+ / clockhour_of_halfday
30
+ / hour_of_day
31
+ / clockhour_of_day
32
+ / minute_of_hour
33
+ / second_of_minute
34
+ / fraction_of_second
35
+ / time_zone_text
36
+ / time_zone_offset_or_id
37
+ )
38
+ end
39
+
40
+ rule text
41
+ string / symbol
42
+ end
43
+
44
+ rule string
45
+ "'" content:[^']* "'" {
46
+ def compile
47
+ if content.text_value.length == 0
48
+ return %Q<"'">
49
+ else
50
+ return %Q<"#{content.text_value}">
51
+ end
52
+ end
53
+ }
54
+ end
55
+
56
+ rule symbol
57
+ [^A-Za-z']+ {
58
+ def compile
59
+ return %<"#{text_value}">
60
+ end
61
+ }
62
+ end
63
+
64
+ rule quote_char
65
+ # a literal '
66
+ "''" {
67
+ def compile
68
+ return %Q("'")
69
+ end
70
+ }
71
+ end
72
+
73
+ rule era
74
+ "G"+
75
+ end
76
+
77
+ rule century_of_era
78
+ "C"+ {
79
+ def compile
80
+ # TODO(sissel): support eras? I don't really care myself.
81
+ return "AD"
82
+ end
83
+ }
84
+ end
85
+
86
+ rule year_of_era
87
+ ( "Y"+ / weekyear / year ) {
88
+ def compile
89
+ # No 'era' support, so year is just year.
90
+ return case text_value.length
91
+ when 2 then "t.year % 100"
92
+ else "t.year"
93
+ end
94
+ end
95
+ }
96
+ end
97
+
98
+ rule weekyear
99
+ "x"+ # same as 'year_of_era' used above.
100
+ end
101
+
102
+ rule week_of_weekyear
103
+ "w"+ {
104
+ def compile
105
+ return "(t.yday / 7) + 1"
106
+ end
107
+ }
108
+ end
109
+
110
+ rule day_of_week_number
111
+ "e"+ {
112
+ def compile
113
+ return "t.wday"
114
+ end
115
+ }
116
+ end
117
+
118
+ rule day_of_week_text
119
+ "E"+ {
120
+ def compile
121
+ if text_value.length < 4
122
+ return %Q<t.strftime("%a")>
123
+ end
124
+ return %Q<t.strftime("%A")>
125
+ end
126
+ }
127
+ end
128
+
129
+ rule year
130
+ "y"+ # same as 'year_of_era' used above.
131
+ end
132
+
133
+ rule day_of_year
134
+ "D"+ {
135
+ def compile
136
+ return %Q<t.yday>
137
+ end
138
+ }
139
+ end
140
+
141
+ rule month_of_year
142
+ "M"+ {
143
+ def compile
144
+ return case text_value.length
145
+ when 1..2 then %Q<sprintf("%0#{text_value.length}d", t.month)>
146
+ when 3 then %Q<t.strftime("%b")>
147
+ else %Q<t.strftime("%B")>
148
+ end
149
+ end
150
+ }
151
+ end
152
+
153
+ rule day_of_month
154
+ "d"+ {
155
+ def compile
156
+ return %Q<t.strftime("%0#{text_value.length}d")>
157
+ end
158
+ }
159
+ end
160
+
161
+ rule halfday_of_day
162
+ "a"+ {
163
+ def compile
164
+ return %Q<t.strftime("%p")>
165
+ end
166
+ }
167
+ end
168
+
169
+ rule hour_of_halfday
170
+ "K"+ {
171
+ def compile
172
+ return %Q<t.strftime("%I")>
173
+ end
174
+ }
175
+ end
176
+
177
+ rule clockhour_of_halfday
178
+ "h"+ {
179
+ def compile
180
+ return %Q<sprintf("%0#{text_value.length}d", t.hour / 12)>
181
+ end
182
+ }
183
+ end
184
+
185
+ rule hour_of_day
186
+ "H"+ {
187
+ def compile
188
+ return %Q<sprintf("%0#{text_value.length}d", t.hour)>
189
+ end
190
+ }
191
+ end
192
+
193
+ rule clockhour_of_day
194
+ "k"+ {
195
+ def compile
196
+ return %Q<sprintf("%0#{text_value.length}d", t.hour + 1)>
197
+ end
198
+ }
199
+ end
200
+
201
+ rule minute_of_hour
202
+ "m"+ {
203
+ def compile
204
+ return %Q<sprintf("%0#{text_value.length}d", t.min)>
205
+ end
206
+ }
207
+ end
208
+
209
+ rule second_of_minute
210
+ "s"+ {
211
+ def compile
212
+ return %Q<sprintf("%0#{text_value.length}d", t.sec)>
213
+ end
214
+ }
215
+ end
216
+
217
+ rule fraction_of_second
218
+ "S"+ {
219
+ def compile
220
+ return %Q<sprintf("%0#{text_value.length}d", t.nsec / (10 ** (9 - #{text_value.length})))>
221
+ end
222
+ }
223
+ end
224
+
225
+ rule time_zone_text
226
+ "z"+
227
+ end
228
+
229
+ rule time_zone_offset_or_id
230
+ "Z"+ {
231
+ def compile
232
+ return %Q<sprintf("%+05d", t.gmtoff / 36)>
233
+ end
234
+ }
235
+ end
236
+ end
@@ -0,0 +1,22 @@
1
+ module Stud
2
+ module With
3
+ # Run a block with arguments. This is sometimes useful in lieu of
4
+ # explicitly assigning variables.
5
+ #
6
+ # I find mainly that using 'with' is a clue that I can factor out
7
+ # a given segment of code into a method or function.
8
+ #
9
+ # Example usage:
10
+ #
11
+ # with(TCPSocket.new("google.com", 80)) do |s|
12
+ # s.write("GET / HTTP/1.0\r\nHost: google.com\r\n\r\n")
13
+ # puts s.read
14
+ # s.close
15
+ # end
16
+ def with(*args, &block)
17
+ block.call(*args)
18
+ end
19
+
20
+ extend self
21
+ end
22
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,67 +9,67 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-15 00:00:00.000000000 Z
12
+ date: 2013-06-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ type: :runtime
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
15
22
  name: metriks
23
+ prerelease: false
16
24
  requirement: !ruby/object:Gem::Requirement
17
25
  none: false
18
26
  requirements:
19
27
  - - ! '>='
20
28
  - !ruby/object:Gem::Version
21
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
22
31
  type: :runtime
23
- prerelease: false
24
32
  version_requirements: !ruby/object:Gem::Requirement
25
33
  none: false
26
34
  requirements:
27
35
  - - ! '>='
28
36
  - !ruby/object:Gem::Version
29
37
  version: '0'
30
- - !ruby/object:Gem::Dependency
31
38
  name: ffi
39
+ prerelease: false
32
40
  requirement: !ruby/object:Gem::Requirement
33
41
  none: false
34
42
  requirements:
35
43
  - - ! '>='
36
44
  - !ruby/object:Gem::Version
37
45
  version: '0'
38
- type: :runtime
39
- prerelease: false
46
+ - !ruby/object:Gem::Dependency
47
+ type: :development
40
48
  version_requirements: !ruby/object:Gem::Requirement
41
49
  none: false
42
50
  requirements:
43
51
  - - ! '>='
44
52
  - !ruby/object:Gem::Version
45
53
  version: '0'
46
- - !ruby/object:Gem::Dependency
47
54
  name: rspec
55
+ prerelease: false
48
56
  requirement: !ruby/object:Gem::Requirement
49
57
  none: false
50
58
  requirements:
51
59
  - - ! '>='
52
60
  - !ruby/object:Gem::Version
53
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
54
63
  type: :development
55
- prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
65
  none: false
58
66
  requirements:
59
67
  - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: '0'
62
- - !ruby/object:Gem::Dependency
63
70
  name: insist
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :development
71
71
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
72
+ requirement: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -82,15 +82,20 @@ executables: []
82
82
  extensions: []
83
83
  extra_rdoc_files: []
84
84
  files:
85
+ - lib/stud/secret.rb
86
+ - lib/stud/with.rb
87
+ - lib/stud/task.rb
88
+ - lib/stud/pool.rb
89
+ - lib/stud/buffer.rb
85
90
  - lib/stud/try.rb
86
- - lib/stud/interval.rb
91
+ - lib/stud/time.rb
92
+ - lib/stud/temporary.rb
87
93
  - lib/stud/benchmark.rb
88
- - lib/stud/benchmark/rusage.rb
89
- - lib/stud/task.rb
90
94
  - lib/stud/trap.rb
91
- - lib/stud/buffer.rb
92
- - lib/stud/secret.rb
93
- - lib/stud/pool.rb
95
+ - lib/stud/interval.rb
96
+ - lib/stud/benchmark/rusage.rb
97
+ - lib/stud/time/format.rb
98
+ - lib/stud/time/format.tt
94
99
  - LICENSE
95
100
  - CHANGELIST
96
101
  - README.md
@@ -115,9 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
120
  version: '0'
116
121
  requirements: []
117
122
  rubyforge_project:
118
- rubygems_version: 1.8.24
123
+ rubygems_version: 1.8.25
119
124
  signing_key:
120
125
  specification_version: 3
121
126
  summary: stud - common code techniques
122
127
  test_files: []
123
- has_rdoc: