csl 1.0.0.pre16 → 1.0.0.pre17
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.
- data/lib/csl.rb +1 -0
- data/lib/csl/date_part.rb +52 -0
- data/lib/csl/locale/date.rb +16 -8
- data/lib/csl/schema.rb +9 -1
- data/lib/csl/style/date.rb +21 -35
- data/lib/csl/version.rb +1 -1
- data/spec/csl/locale/date_spec.rb +1 -1
- metadata +3 -2
data/lib/csl.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
module CSL
|
2
|
+
module DatePart
|
3
|
+
|
4
|
+
def range_delimiter
|
5
|
+
attributes.fetch(:'range-delimiter', '')
|
6
|
+
end
|
7
|
+
|
8
|
+
def has_name?
|
9
|
+
attribute?(:name)
|
10
|
+
end
|
11
|
+
|
12
|
+
def name
|
13
|
+
attributes[:name].to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
def has_form?
|
17
|
+
attribute?(:form)
|
18
|
+
end
|
19
|
+
|
20
|
+
def form
|
21
|
+
case
|
22
|
+
when has_form?
|
23
|
+
attributes[:form].to_s
|
24
|
+
when day?
|
25
|
+
'numeric'
|
26
|
+
else
|
27
|
+
'long'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Schema.values[:date_part][:form].each do |type|
|
32
|
+
pattern = Regexp.new("^#{type}", true)
|
33
|
+
|
34
|
+
define_method("#{type}?".tr('-', '_')) do
|
35
|
+
form =~ pattern
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def year?
|
40
|
+
name =~ /year/i
|
41
|
+
end
|
42
|
+
|
43
|
+
def month?
|
44
|
+
name =~ /month/i
|
45
|
+
end
|
46
|
+
|
47
|
+
def day?
|
48
|
+
name =~ /day/i
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
data/lib/csl/locale/date.rb
CHANGED
@@ -21,10 +21,23 @@ module CSL
|
|
21
21
|
raise ValidationError, "parent must be locale node: was #{node.inspect}" unless node.is_a?(Locale)
|
22
22
|
end
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
def delimiter
|
25
|
+
attributes.fetch(:delimiter, '')
|
26
26
|
end
|
27
27
|
|
28
|
+
def text?
|
29
|
+
!numeric?
|
30
|
+
end
|
31
|
+
|
32
|
+
def numeric?
|
33
|
+
attributes[:form].to_s =~ /^numeric$/i
|
34
|
+
end
|
35
|
+
|
36
|
+
def has_date_parts?
|
37
|
+
!date_parts.empty?
|
38
|
+
end
|
39
|
+
alias has_parts? has_date_parts?
|
40
|
+
|
28
41
|
end
|
29
42
|
|
30
43
|
# DatePart represent the localized formatting options for an individual
|
@@ -35,12 +48,7 @@ module CSL
|
|
35
48
|
attr_struct :name, :form, :'range-delimiter',
|
36
49
|
*Schema.attr(:formatting, :periods)
|
37
50
|
|
38
|
-
|
39
|
-
define_method("#{part}?") do
|
40
|
-
attributes.name == part
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
51
|
+
include CSL::DatePart
|
44
52
|
end
|
45
53
|
|
46
54
|
|
data/lib/csl/schema.rb
CHANGED
@@ -91,7 +91,15 @@ module CSL
|
|
91
91
|
@attributes.values_at(:affixes, :font).flatten)
|
92
92
|
|
93
93
|
@attributes.freeze
|
94
|
+
|
95
|
+
@values = Hash.new { |h,k| h.fetch(k.to_sym, nil) }.merge({
|
96
|
+
:date_part => {
|
97
|
+
:form => %w{ numeric numeric-leading-zeros ordinal long short }
|
98
|
+
}
|
99
|
+
})
|
94
100
|
|
101
|
+
@values.freeze
|
102
|
+
|
95
103
|
@file = File.expand_path('../../../vendor/schema/csl.rng', __FILE__)
|
96
104
|
|
97
105
|
@validators = {
|
@@ -120,7 +128,7 @@ module CSL
|
|
120
128
|
class << self
|
121
129
|
|
122
130
|
attr_accessor :version, :namespace, :types, :variables, :categories,
|
123
|
-
:attributes, :preamble
|
131
|
+
:attributes, :preamble, :values
|
124
132
|
|
125
133
|
private :new
|
126
134
|
|
data/lib/csl/style/date.rb
CHANGED
@@ -2,7 +2,6 @@ module CSL
|
|
2
2
|
class Style
|
3
3
|
|
4
4
|
class Date < Node
|
5
|
-
|
6
5
|
attr_defaults :'date-parts' => 'year-month-day'
|
7
6
|
|
8
7
|
attr_struct :name, :form, :'range-delimiter', :'date-parts', :variable,
|
@@ -22,6 +21,12 @@ module CSL
|
|
22
21
|
yield self if block_given?
|
23
22
|
end
|
24
23
|
|
24
|
+
# @return [Array<String>] the localized date parts to be used
|
25
|
+
def date_parts_filter
|
26
|
+
attributes[:'date-parts'].to_s.split(/-/)
|
27
|
+
end
|
28
|
+
alias parts_filter date_parts_filter
|
29
|
+
|
25
30
|
def delimiter
|
26
31
|
attributes.fetch(:delimiter, '')
|
27
32
|
end
|
@@ -37,56 +42,37 @@ module CSL
|
|
37
42
|
def has_form?
|
38
43
|
attribute?(:form)
|
39
44
|
end
|
45
|
+
alias localized? has_form?
|
40
46
|
|
41
47
|
def form
|
42
48
|
attributes[:form]
|
43
49
|
end
|
44
50
|
|
51
|
+
def numeric?
|
52
|
+
attributes[:form].to_s =~ /^numeric$/i
|
53
|
+
end
|
54
|
+
|
55
|
+
def text?
|
56
|
+
attributes[:form].to_s =~ /^text$/i
|
57
|
+
end
|
58
|
+
|
45
59
|
def has_date_parts?
|
46
60
|
!date_parts.empty?
|
47
61
|
end
|
48
62
|
alias has_parts? has_date_parts?
|
49
63
|
|
64
|
+
def has_overrides?
|
65
|
+
localized? && has_parts?
|
66
|
+
end
|
50
67
|
end
|
51
68
|
|
52
69
|
class DatePart < Node
|
70
|
+
has_no_children
|
71
|
+
|
53
72
|
attr_struct :name, :form, :'range-delimiter',
|
54
73
|
*Schema.attr(:formatting, :periods)
|
55
74
|
|
56
|
-
|
57
|
-
attributes.fetch(:'range-delimiter', '')
|
58
|
-
end
|
59
|
-
|
60
|
-
def name
|
61
|
-
attributes[:name].to_s
|
62
|
-
end
|
63
|
-
|
64
|
-
def has_form?
|
65
|
-
attribute?(:form)
|
66
|
-
end
|
67
|
-
|
68
|
-
def form
|
69
|
-
case
|
70
|
-
when has_form?
|
71
|
-
attributes[:form]
|
72
|
-
when has_parent?
|
73
|
-
parent.form
|
74
|
-
else
|
75
|
-
nil
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def year?
|
80
|
-
name =~ /year/i
|
81
|
-
end
|
82
|
-
|
83
|
-
def month?
|
84
|
-
name =~ /month/i
|
85
|
-
end
|
86
|
-
|
87
|
-
def day?
|
88
|
-
name =~ /day/i
|
89
|
-
end
|
75
|
+
include CSL::DatePart
|
90
76
|
end
|
91
77
|
|
92
78
|
end
|
data/lib/csl/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.pre17
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- features/support/env.rb
|
110
110
|
- lib/csl.rb
|
111
111
|
- lib/csl/compatibility.rb
|
112
|
+
- lib/csl/date_part.rb
|
112
113
|
- lib/csl/errors.rb
|
113
114
|
- lib/csl/extensions.rb
|
114
115
|
- lib/csl/info.rb
|
@@ -182,7 +183,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
182
183
|
version: '0'
|
183
184
|
segments:
|
184
185
|
- 0
|
185
|
-
hash: -
|
186
|
+
hash: -438810669519834613
|
186
187
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
188
|
none: false
|
188
189
|
requirements:
|