@@ -12,6 +12,7 @@ defmodule CLDRex.Parsers.XMLParser do
12
12
def parse_main_data do
13
13
@ main_path
14
14
|> File . ls!
15
+ |> Enum . take ( 1 )
15
16
|> process_files
16
17
end
17
18
@@ -77,7 +78,7 @@ defmodule CLDRex.Parsers.XMLParser do
77
78
xmap ( doc , calendars: [
78
79
~x" //dates/calendars/calendar" l ,
79
80
type: ~x" ./@type" ,
80
- monthContexts : [
81
+ month_contexts : [
81
82
~x" ./months/monthContext" l ,
82
83
name: ~x" ./@type" ,
83
84
formats: [
@@ -90,7 +91,7 @@ defmodule CLDRex.Parsers.XMLParser do
90
91
]
91
92
]
92
93
] ,
93
- dayContexts : [
94
+ day_contexts : [
94
95
~x" ./days/dayContext" l ,
95
96
name: ~x" ./@type" ,
96
97
formats: [
@@ -102,6 +103,21 @@ defmodule CLDRex.Parsers.XMLParser do
102
103
label: ~x" ./text()"
103
104
]
104
105
]
106
+ ] ,
107
+ date_formats: [
108
+ ~x" ./dateFormats/dateFormatLength" l ,
109
+ length: ~x" ./@type" ,
110
+ format: ~x" ./dateFormat/pattern/text()"
111
+ ] ,
112
+ time_formats: [
113
+ ~x" ./timeFormats/timeFormatLength" l ,
114
+ length: ~x" ./@type" ,
115
+ format: ~x" ./timeFormat/pattern/text()"
116
+ ] ,
117
+ date_time_formats: [
118
+ ~x" ./dateTimeFormats/dateTimeFormatLength" l ,
119
+ length: ~x" ./@type" ,
120
+ format: ~x" ./dateTimeFormat/pattern/text()"
105
121
]
106
122
] )
107
123
end
@@ -110,7 +126,7 @@ defmodule CLDRex.Parsers.XMLParser do
110
126
Enum . reduce xdoc , % { } , fn ( data , _acc ) ->
111
127
{ _ , calendars } = data
112
128
Enum . reduce ( calendars , % { } , fn ( cal , cacc ) ->
113
- mc = Enum . reduce ( cal . monthContexts , % { } , fn ( mctxt , mcacc ) ->
129
+ mc = Enum . reduce ( cal . month_contexts , % { } , fn ( mctxt , mcacc ) ->
114
130
f = Enum . reduce ( mctxt . formats , % { } , fn ( fmt , facc ) ->
115
131
m = Enum . reduce ( fmt . months , % { } , fn ( month , macc ) ->
116
132
Map . put ( macc , String . to_atom ( to_string ( month . month ) ) , month . label )
@@ -120,7 +136,7 @@ defmodule CLDRex.Parsers.XMLParser do
120
136
Map . put ( mcacc , String . to_atom ( to_string ( mctxt . name ) ) , f )
121
137
end )
122
138
123
- dc = Enum . reduce ( cal . dayContexts , % { } , fn ( dctxt , dcacc ) ->
139
+ dc = Enum . reduce ( cal . day_contexts , % { } , fn ( dctxt , dcacc ) ->
124
140
f = Enum . reduce ( dctxt . formats , % { } , fn ( fmt , facc ) ->
125
141
m = Enum . reduce ( fmt . days , % { } , fn ( day , macc ) ->
126
142
Map . put ( macc , String . to_atom ( to_string ( day . day ) ) , day . label )
@@ -130,7 +146,25 @@ defmodule CLDRex.Parsers.XMLParser do
130
146
Map . put ( dcacc , String . to_atom ( to_string ( dctxt . name ) ) , f )
131
147
end )
132
148
133
- contexts = % { months: mc , days: dc }
149
+ datec = Enum . reduce ( cal . date_formats , % { } , fn ( datectxt , dateacc ) ->
150
+ Map . put ( dateacc , datectxt . length , datectxt . format )
151
+ end )
152
+
153
+ timec = Enum . reduce ( cal . time_formats , % { } , fn ( timectxt , timeacc ) ->
154
+ Map . put ( timeacc , timectxt . length , timectxt . format )
155
+ end )
156
+
157
+ dtc = Enum . reduce ( cal . date_time_formats , % { } , fn ( dtctxt , dtacc ) ->
158
+ Map . put ( dtacc , dtctxt . length , dtctxt . format )
159
+ end )
160
+
161
+ contexts = % {
162
+ months: mc ,
163
+ days: dc ,
164
+ date_formats: datec ,
165
+ time_formats: timec ,
166
+ date_time_formats: dtc
167
+ }
134
168
135
169
Map . put ( cacc , String . to_atom ( to_string ( cal . type ) ) , contexts )
136
170
end )
0 commit comments