strptime 0.2.2 → 0.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1de84bea96838779186c2643887ba29598169a2f
4
- data.tar.gz: 8da629b484a3781a7231d0163f1787cc640a45cf
3
+ metadata.gz: 4c987792cc3f05d75ef1dc89a1c847f9bac19403
4
+ data.tar.gz: aa8a4b780e4030c46476a4cb37d892d6764ceca4
5
5
  SHA512:
6
- metadata.gz: fd5f63e6ab4b74f9c7326455418c0ba1011ffedd7a95b9dd659cae3b036a7510c457bb4e3a364ec2c5f30408962d7aa72743a6964fef3d8607a6f5571ef6cf8b
7
- data.tar.gz: fcd44777447817669688ab6b7e74b560000216df4b5b4b6586574005c1d682412e39943f652a04dae79d7d8c7ca11c29b235b488109ee5220be29d66a69d17f9
6
+ metadata.gz: 9917747c59e9bc034bc19827c7974644f0a63224e78a968b92f926c4f1656246639f9b014f0e51a5f12ca5f6dbfc6aa1939e68a9128749d90e734131476a7585
7
+ data.tar.gz: 9a7d916b760bd9e7a61192db14c1ef5a99385a61d3a515d41caae8cb7d1d9c4e79ce4904a3fb6f1344eeb767c870821d045e04350393b34638f264241847b17a
data/README.md CHANGED
@@ -26,6 +26,8 @@ Or install it yourself as:
26
26
 
27
27
  ## Usage
28
28
 
29
+ ### Strptime for time parsing
30
+
29
31
  ```ruby
30
32
  require 'strptime'
31
33
  parser = Strptime.new('%Y-%m-%dT%H:%M:%S%z')
@@ -33,6 +35,16 @@ parser.exec('2015-12-25T12:34:56+09') #=> 2015-12-25 12:34:56 +09:00
33
35
  parser.execi('2015-12-25T12:34:56+09') #=> 1451014496
34
36
  ```
35
37
 
38
+ ### Strftime for time formatting
39
+
40
+ ```ruby
41
+ require 'strptime'
42
+ now = Time.now
43
+ formatter = Strftime.new('%Y-%m-%dT%H:%M:%S.%L %z')
44
+ formatter.exec(now) # 2017-12-29T07:24:31.505 +0900
45
+ formatter.execi(now.to_i) # 2017-12-28T22:24:31.000 +0000
46
+ ```
47
+
36
48
  ## Contributing
37
49
 
38
50
  1. Fork it ( https://github.com/nurse/strptime/fork )
@@ -44,7 +44,9 @@ static ID id_gmtoff;
44
44
 
45
45
  #define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
46
46
 
47
-
47
+ static const char *month_names[] = {
48
+ "January", "February", "March", "April", "May", "June",
49
+ "July", "August", "September", "October", "November", "December"};
48
50
 
49
51
  static VALUE
50
52
  strftime_exec0(void **pc, VALUE fmt, struct timespec *tsp, int gmtoff, size_t result_length)
@@ -62,7 +64,7 @@ strftime_exec0(void **pc, VALUE fmt, struct timespec *tsp, int gmtoff, size_t re
62
64
  NULL, NULL, NULL, NULL,
63
65
  LABEL_PTR(Y), NULL, NULL, NULL,
64
66
  NULL, NULL, LABEL_PTR(_5f), LABEL_PTR(_60),
65
- NULL, NULL, NULL, LABEL_PTR(d),
67
+ NULL, LABEL_PTR(b), NULL, LABEL_PTR(d),
66
68
  LABEL_PTR(d), NULL, NULL, NULL,
67
69
  NULL, NULL, NULL, NULL,
68
70
  LABEL_PTR(m), NULL, NULL, NULL,
@@ -151,6 +153,14 @@ strftime_exec0(void **pc, VALUE fmt, struct timespec *tsp, int gmtoff, size_t re
151
153
  ADD_PC(1);
152
154
  END_INSN(d)
153
155
  }
156
+ INSN_ENTRY(b)
157
+ {
158
+ const char *mon = month_names[tm.tm_mon];
159
+ memcpy(p, mon, 3);
160
+ p += 3;
161
+ ADD_PC(1);
162
+ END_INSN(b)
163
+ }
154
164
  INSN_ENTRY(m)
155
165
  {
156
166
  int mon = tm.tm_mon + 1;
@@ -251,6 +261,9 @@ strftime_compile(const char *fmt, size_t flen, size_t *rlenp)
251
261
  case 'd':
252
262
  rlen += 2;
253
263
  goto accept_format;
264
+ case 'b':
265
+ rlen += 3;
266
+ goto accept_format;
254
267
  case 'm':
255
268
  rlen += 2;
256
269
  goto accept_format;
@@ -1,3 +1,3 @@
1
1
  class Strptime
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strptime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - NARUSE, Yui
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-25 00:00:00.000000000 Z
11
+ date: 2018-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler