skripsi-generator 1.0.0

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.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/example/logo.png +0 -0
  3. data/example/skripsi.rb +33 -0
  4. data/example/test_webgen.rb +14 -0
  5. data/extconf.rb +11 -0
  6. data/include/lokasidef.h +39 -0
  7. data/include/ntapdef.h +79 -0
  8. data/include/risetdef.h +598 -0
  9. data/include/skripsi.h +7 -0
  10. data/include/temadef.h +129 -0
  11. data/include/urai.h +36 -0
  12. data/lib/adaptor/adaptor.rb +104 -0
  13. data/lib/adaptor/unduh.rb +29 -0
  14. data/lib/adaptor/web_generate.rb +82 -0
  15. data/lib/skripsi.rb +13 -0
  16. data/lib/sks/alat/document.rb +145 -0
  17. data/lib/sks/alat/font_table.rb +75 -0
  18. data/lib/sks/alat/numbering.rb +287 -0
  19. data/lib/sks/alat/prop_app.rb +85 -0
  20. data/lib/sks/alat/prop_core.rb +38 -0
  21. data/lib/sks/alat/prop_custom.rb +30 -0
  22. data/lib/sks/alat/rels.rb +33 -0
  23. data/lib/sks/alat/rels_document.rb +38 -0
  24. data/lib/sks/alat/setting.rb +89 -0
  25. data/lib/sks/alat/style.rb +432 -0
  26. data/lib/sks/alat/theme.rb +311 -0
  27. data/lib/sks/alat/web.rb +34 -0
  28. data/lib/sks/alat.rb +41 -0
  29. data/lib/sks/dasar.rb +29 -0
  30. data/lib/sks/footer/dasar.rb +0 -0
  31. data/lib/sks/header/dasar.rb +0 -0
  32. data/lib/sks/istimewa/dasar.rb +0 -0
  33. data/lib/sks/media/dasar.rb +14 -0
  34. data/lib/sks/paragraph/dasar.rb +114 -0
  35. data/lib/sks/remote.rb +28 -0
  36. data/lib/sks/section/dasar.rb +33 -0
  37. data/lib/sks/sks.rb +65 -0
  38. data/lib/transformasi/web.rb +34 -0
  39. data/lib/xml/administrasi.rb +124 -0
  40. data/lib/xml/builder.rb +269 -0
  41. data/lib/xml/dasar.rb +17 -0
  42. data/lib/xml/media.rb +66 -0
  43. data/lib/xml/paragraph.rb +9 -0
  44. data/lib/xml/section.rb +84 -0
  45. data/src/jembatan.c +34 -0
  46. data/src/sisi.c +1665 -0
  47. data/src/skripsi.c +77 -0
  48. data/src/urai.c +70 -0
  49. metadata +162 -0
@@ -0,0 +1,287 @@
1
+ module SistemKebut
2
+ module Peralatan
3
+ module Gudang
4
+ NUMBERING = {
5
+ MARKUP_COMPAT: :MARKUP_COMPAT_VAL,
6
+ OFFICE: :OFFICE_VAL,
7
+ OFFICE_RELATIONSHIP: :OFFICE_RELATIONSHIP_VAL,
8
+ WORD_MAIN: :WORD_MAIN_VAL,
9
+ VML: :VML_VAL,
10
+ WORDML10: :WORDML10_VAL,
11
+ ATTR_IGNORABLE: :D_NAMES_WORDML10
12
+ }
13
+ NUMBERING_JUMLAH = 1
14
+ end
15
+
16
+ module KebutuhanDasar
17
+ def generate_numbering
18
+ inner_generate_numbering
19
+ .catat_administrasi(:LOKASI_WORD_NUMBERING)
20
+ .catat_arsip
21
+ .struktur
22
+ end
23
+
24
+ private
25
+ def inner_generate_numbering
26
+ SistemKebut::XML::Builder.new do |xml|
27
+ xml.numbering(Gudang::NUMBERING) do
28
+ xml.abstractNum(ATTR_ABSTRACT_NUMID: '1') do
29
+ xml.lvl(ATTR_NUMBERING_LEVEL: '0') do
30
+ xml.start('w:val' => '1')
31
+ xml.numFmt('w:val' => 'decimal')
32
+ xml.lvlText('w:val' => '%1.')
33
+ xml.lvlJc('w:val' => 'start')
34
+ xml.pPr do
35
+ xml.tabs do
36
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '720')
37
+ end
38
+ xml.ind(ATTR_START: '720', ATTR_LEVEL_INDENT: '360')
39
+ end
40
+ xml.rPr do
41
+ xml.rFonts(:ATTR_ASCII => :FONT_ROMAN_VAL, 'w:hAnsi' => :FONT_ROMAN_VAL)
42
+ end
43
+ end
44
+ xml.lvl(ATTR_NUMBERING_LEVEL: '1') do
45
+ xml.start('w:val' => '1')
46
+ xml.numFmt('w:val' => 'decimal')
47
+ xml.lvlText('w:val' => '%2.')
48
+ xml.lvlJc('w:val' => 'start')
49
+ xml.pPr do
50
+ xml.tabs do
51
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '1080')
52
+ end
53
+ xml.ind(ATTR_START: '1080', ATTR_LEVEL_INDENT: '360')
54
+ end
55
+ xml.rPr
56
+ end
57
+ xml.lvl(ATTR_NUMBERING_LEVEL: '2') do
58
+ xml.start('w:val' => '1')
59
+ xml.numFmt('w:val' => 'decimal')
60
+ xml.lvlText('w:val' => '%3.')
61
+ xml.lvlJc('w:val' => 'start')
62
+ xml.pPr do
63
+ xml.tabs do
64
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '1440')
65
+ end
66
+ xml.ind(ATTR_START: '1440', ATTR_LEVEL_INDENT: '360')
67
+ end
68
+ xml.rPr
69
+ end
70
+ xml.lvl(ATTR_NUMBERING_LEVEL: '3') do
71
+ xml.start('w:val' => '1')
72
+ xml.numFmt('w:val' => 'decimal')
73
+ xml.lvlText('w:val' => '%4.')
74
+ xml.lvlJc('w:val' => 'start')
75
+ xml.pPr do
76
+ xml.tabs do
77
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '1800')
78
+ end
79
+ xml.ind(ATTR_START: '1800', ATTR_LEVEL_INDENT: '360')
80
+ end
81
+ xml.rPr
82
+ end
83
+ xml.lvl(ATTR_NUMBERING_LEVEL: '4') do
84
+ xml.start('w:val' => '1')
85
+ xml.numFmt('w:val' => 'decimal')
86
+ xml.lvlText('w:val' => '%5.')
87
+ xml.lvlJc('w:val' => 'start')
88
+ xml.pPr do
89
+ xml.tabs do
90
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '2160')
91
+ end
92
+ xml.ind(ATTR_START: '2160', ATTR_LEVEL_INDENT: '360')
93
+ end
94
+ xml.rPr
95
+ end
96
+ xml.lvl(ATTR_NUMBERING_LEVEL: '5') do
97
+ xml.start('w:val' => '1')
98
+ xml.numFmt('w:val' => 'decimal')
99
+ xml.lvlText('w:val' => '%6.')
100
+ xml.lvlJc('w:val' => 'start')
101
+ xml.pPr do
102
+ xml.tabs do
103
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '2520')
104
+ end
105
+ xml.ind(ATTR_START: '2520', ATTR_LEVEL_INDENT: '360')
106
+ end
107
+ xml.rPr
108
+ end
109
+ xml.lvl(ATTR_NUMBERING_LEVEL: '6') do
110
+ xml.start('w:val' => '1')
111
+ xml.numFmt('w:val' => 'decimal')
112
+ xml.lvlText('w:val' => '%7.')
113
+ xml.lvlJc('w:val' => 'start')
114
+ xml.pPr do
115
+ xml.tabs do
116
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '2880')
117
+ end
118
+ xml.ind(ATTR_START: '2880', ATTR_LEVEL_INDENT: '360')
119
+ end
120
+ xml.rPr
121
+ end
122
+ xml.lvl(ATTR_NUMBERING_LEVEL: '7') do
123
+ xml.start('w:val' => '1')
124
+ xml.numFmt('w:val' => 'decimal')
125
+ xml.lvlText('w:val' => '%8.')
126
+ xml.lvlJc('w:val' => 'start')
127
+ xml.pPr do
128
+ xml.tabs do
129
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '3240')
130
+ end
131
+ xml.ind(ATTR_START: '3240', ATTR_LEVEL_INDENT: '360')
132
+ end
133
+ xml.rPr
134
+ end
135
+ xml.lvl(ATTR_NUMBERING_LEVEL: '8') do
136
+ xml.start('w:val' => '1')
137
+ xml.numFmt('w:val' => 'decimal')
138
+ xml.lvlText('w:val' => '%9.')
139
+ xml.lvlJc('w:val' => 'start')
140
+ xml.pPr do
141
+ xml.tabs do
142
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '3600')
143
+ end
144
+ xml.ind(ATTR_START: '3600', ATTR_LEVEL_INDENT: '360')
145
+ end
146
+ xml.rPr
147
+ end
148
+ end
149
+ xml.abstractNum(ATTR_ABSTRACT_NUMID: '2') do
150
+ xml.lvl(ATTR_NUMBERING_LEVEL: '0') do
151
+ xml.start('w:val' => '1')
152
+ xml.numFmt('w:val' => 'none')
153
+ xml.suff('w:val' => 'nothing')
154
+ xml.lvlText('w:val' => '')
155
+ xml.lvlJc('w:val' => 'start')
156
+ xml.pPr do
157
+ xml.tabs do
158
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
159
+ end
160
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
161
+ end
162
+ end
163
+ xml.lvl(ATTR_NUMBERING_LEVEL: '1') do
164
+ xml.start('w:val' => '1')
165
+ xml.numFmt('w:val' => 'none')
166
+ xml.suff('w:val' => 'nothing')
167
+ xml.lvlText('w:val' => '')
168
+ xml.lvlJc('w:val' => 'start')
169
+ xml.pPr do
170
+ xml.tabs do
171
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
172
+ end
173
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
174
+ end
175
+ end
176
+ xml.lvl(ATTR_NUMBERING_LEVEL: '2') do
177
+ xml.start('w:val' => '1')
178
+ xml.numFmt('w:val' => 'none')
179
+ xml.suff('w:val' => 'nothing')
180
+ xml.lvlText('w:val' => '')
181
+ xml.lvlJc('w:val' => 'start')
182
+ xml.pPr do
183
+ xml.tabs do
184
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
185
+ end
186
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
187
+ end
188
+ end
189
+ xml.lvl(ATTR_NUMBERING_LEVEL: '3') do
190
+ xml.start('w:val' => '1')
191
+ xml.numFmt('w:val' => 'none')
192
+ xml.suff('w:val' => 'nothing')
193
+ xml.lvlText('w:val' => '')
194
+ xml.lvlJc('w:val' => 'start')
195
+ xml.pPr do
196
+ xml.tabs do
197
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
198
+ end
199
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
200
+ end
201
+ end
202
+ xml.lvl(ATTR_NUMBERING_LEVEL: '4') do
203
+ xml.start('w:val' => '1')
204
+ xml.numFmt('w:val' => 'none')
205
+ xml.suff('w:val' => 'nothing')
206
+ xml.lvlText('w:val' => '')
207
+ xml.lvlJc('w:val' => 'start')
208
+ xml.pPr do
209
+ xml.tabs do
210
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
211
+ end
212
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
213
+ end
214
+ end
215
+ xml.lvl(ATTR_NUMBERING_LEVEL: '5') do
216
+ xml.start('w:val' => '1')
217
+ xml.numFmt('w:val' => 'none')
218
+ xml.suff('w:val' => 'nothing')
219
+ xml.lvlText('w:val' => '')
220
+ xml.lvlJc('w:val' => 'start')
221
+ xml.pPr do
222
+ xml.tabs do
223
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
224
+ end
225
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
226
+ end
227
+ end
228
+ xml.lvl(ATTR_NUMBERING_LEVEL: '6') do
229
+ xml.start('w:val' => '1')
230
+ xml.numFmt('w:val' => 'none')
231
+ xml.suff('w:val' => 'nothing')
232
+ xml.lvlText('w:val' => '')
233
+ xml.lvlJc('w:val' => 'start')
234
+ xml.pPr do
235
+ xml.tabs do
236
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
237
+ end
238
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
239
+ end
240
+ end
241
+ xml.lvl(ATTR_NUMBERING_LEVEL: '7') do
242
+ xml.start('w:val' => '1')
243
+ xml.numFmt('w:val' => 'none')
244
+ xml.suff('w:val' => 'nothing')
245
+ xml.lvlText('w:val' => '')
246
+ xml.lvlJc('w:val' => 'start')
247
+ xml.pPr do
248
+ xml.tabs do
249
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
250
+ end
251
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
252
+ end
253
+ end
254
+ xml.lvl(ATTR_NUMBERING_LEVEL: '8') do
255
+ xml.start('w:val' => '1')
256
+ xml.numFmt('w:val' => 'none')
257
+ xml.suff('w:val' => 'nothing')
258
+ xml.lvlText('w:val' => '')
259
+ xml.lvlJc('w:val' => 'start')
260
+ xml.pPr do
261
+ xml.tabs do
262
+ xml.tab('w:val' => :LEVEL_TAB_NAME_VALUE, :ATTR_POS => '0')
263
+ end
264
+ xml.ind(ATTR_START: '0', ATTR_LEVEL_INDENT: '0')
265
+ end
266
+ end
267
+ end
268
+ xml.num(ATTR_NUMBERING_ID: '1') do
269
+ xml.abstractNumId('w:val' => '1')
270
+ end
271
+ xml.num(ATTR_NUMBERING_ID: '2') do
272
+ xml.abstractNumId('w:val' => '2')
273
+ end
274
+ Gudang::NUMBERING_JUMLAH.times do |i|
275
+ xml.num(ATTR_NUMBERING_ID: (i + 3).to_s) do
276
+ xml.abstractNumId('w:val' => '1')
277
+ xml.lvlOverride(ATTR_NUMBERING_LEVEL: '0') do
278
+ xml.startOverride('w:val' => '1')
279
+ end
280
+ end
281
+ end
282
+ end
283
+ end
284
+ end
285
+ end
286
+ end
287
+ end
@@ -0,0 +1,85 @@
1
+ module SistemKebut
2
+ module Peralatan
3
+ module Gudang
4
+ PROP_APP = { xmlns: :CUSTOM_PROP_VAL, VT: :VT_VAL }
5
+ PROP_APP_VALUE = {
6
+ TotalTime: '60',
7
+ Pages: '1',
8
+ Words: '1',
9
+ Characters: '1',
10
+ Application: :LABEL_WORD,
11
+ DocSecurity: '0',
12
+ Lines: '1',
13
+ Paragraphs: '1',
14
+ ScaleCrop: :FALSE_VAL,
15
+ HeadingPairs: {
16
+ vector: {
17
+ size: '2',
18
+ baseType: :HEADING_PAIR_VAL,
19
+ body: {
20
+ variant: [ { lpstr: :TEXT_TITLE }, { i4: '1' } ]
21
+ }
22
+ }
23
+ },
24
+ TitlesOfParts: {
25
+ vector: {
26
+ size: '1',
27
+ baseType: :VECTOR_TYPE_VAL,
28
+ body: { lpstr: '' }
29
+ }
30
+ },
31
+ Company: 'Snailight Coorporation',
32
+ LinksUpToDate: :FALSE_VAL,
33
+ CharactersWithSpaces: '1',
34
+ SharedDoc: :FALSE_VAL,
35
+ HyperlinksChanged: :FALSE_VAL,
36
+ AppVersion: '16.0000'
37
+ }
38
+ end
39
+
40
+ module KebutuhanDasar
41
+ def generate_prop_app
42
+ inner_generate_prop_app
43
+ .catat_administrasi(:LOKASI_PROP_APP)
44
+ .catat_arsip
45
+ .struktur
46
+ end
47
+
48
+ private
49
+ def inner_generate_prop_app
50
+ @_prop_app_value_xml = nil
51
+ @_prop_app_value_proses = nil
52
+ proses = proc do |tag, body|
53
+ break if @_prop_app_value_xml.nil?
54
+ break if @_prop_app_value_proses.nil?
55
+ key = body.clone
56
+ if body.is_a?(Hash)
57
+ if key.values.any? { |v| v.is_a?(Hash) }
58
+ key.each do |k, v|
59
+ if v.is_a?(Hash)
60
+ @_prop_app_value_xml.send(k, v)
61
+ key.delete(k)
62
+ end
63
+ end
64
+ else
65
+ subelm = key.fetch(:body) { nil }
66
+ key.delete(:body) unless subelm.nil?
67
+ end
68
+ @_prop_app_value_xml.send(tag, key) do
69
+ subelm.each(&@_prop_app_value_proses) unless subelm.nil?
70
+ end
71
+ else
72
+ @_prop_app_value_xml.send(tag, body)
73
+ end
74
+ end
75
+ @_prop_app_value_proses = proses
76
+ SistemKebut::XML::Builder.new do |xml|
77
+ @_prop_app_value_xml = xml
78
+ xml.Properties(Gudang::PROP_APP) do
79
+ Gudang::PROP_APP_VALUE.each(&proses)
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,38 @@
1
+ module SistemKebut
2
+ module Peralatan
3
+ module Gudang
4
+ PROP_CORE = {
5
+ CP: :CP_VAL,
6
+ PURL_ELEMENT: :PURL_ELEMENT_VAL,
7
+ PURL_TERMS: :PURL_TERMS_VAL,
8
+ PURL_DC_MI: :PURL_DC_MI_VAL,
9
+ SCHEMA_INST: :SCHEMA_INST_VAL
10
+ }
11
+ PROP_CORE_XSI = { XSI_TYPE: :XSI_TYPE_VAL }
12
+ PROP_CORE_TIMEFORM = "%Y-%m-%dT%H:%M:%SZ".freeze
13
+ end
14
+
15
+ module KebutuhanDasar
16
+ def generate_prop_core
17
+ inner_generate_prop_core
18
+ .catat_administrasi(:LOKASI_PROP_CORE)
19
+ .catat_arsip
20
+ .struktur
21
+ end
22
+
23
+ private
24
+ def inner_generate_prop_core
25
+ waktu = Time.now.utc.strftime(Gudang::PROP_CORE_TIMEFORM)
26
+ SistemKebut::XML::Builder.new do |xml|
27
+ xml.Properties(Gudang::PROP_CORE) do
28
+ xml.creator(:CREATOR_VAL)
29
+ xml.lastModifiedBy(:MODIFIED_BY_VAL)
30
+ xml.revision('1')
31
+ xml.created(Gudang::PROP_CORE_XSI, waktu)
32
+ xml.modified(Gudang::PROP_CORE_XSI, waktu)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ module SistemKebut
2
+ module Peralatan
3
+ module Gudang
4
+ PROP_CUSTOM = { xmlns: :CUSTOM_PROP_VAL, VT: :VT_VAL }
5
+ end
6
+
7
+ module KebutuhanDasar
8
+ def generate_prop_custom
9
+ inner_generate_prop_custom
10
+ .catat_administrasi(:LOKASI_PROP_CUSTOM)
11
+ .catat_arsip
12
+ .struktur
13
+ end
14
+
15
+ private
16
+ def inner_generate_prop_custom
17
+ SistemKebut::XML::Builder.new do |xml|
18
+ xml.Properties(Gudang::PROP_CUSTOM) do
19
+ xml.property(fmtid: :DOC_ID_VAL, pid: '2', name: :PROP_NAME_VAL) do
20
+ xml.lpwstr('1033-12.2.0.21546')
21
+ end
22
+ xml.property(fmtid: :DOC_ID_VAL, pid: '3', name: :PROP_NAME2_VAL) do
23
+ xml.lpwstr(:TEXT_MEDIA)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+ module SistemKebut
2
+ module Peralatan
3
+ module Gudang
4
+ RELS_NS = { xmlns: :PACKAGE_RELATIONSHIP_VAL }
5
+ RELS_KONTEN = {
6
+ 'rId1' => { Type: :PACKAGE_RELATIONSHIP_META_CORE_VAL, Target: :LOKASI_PROP_CORE },
7
+ 'rId2' => { Type: :OFFICE_RELATIONSHIP_EXTENDED_VAL, Target: :LOKASI_PROP_APP },
8
+ 'rId3' => { Type: :OFFICE_RELATIONSHIP_CUSTOM_VAL, Target: :LOKASI_PROP_CUSTOM },
9
+ 'rId4' => { Type: :OFFICE_RELATIONSHIP_OFFICE_VAL, Target: :LOKASI_WORD_DOCUMENT }
10
+ }
11
+ end
12
+
13
+ module KebutuhanDasar
14
+ def generate_rels
15
+ inner_generate_rels
16
+ .catat_administrasi(:LOKASI_RELS)
17
+ .catat_arsip
18
+ .struktur
19
+ end
20
+
21
+ private
22
+ def inner_generate_rels
23
+ SistemKebut::XML::Builder.new do |xml|
24
+ xml.Relationships(Gudang::RELS_NS) do
25
+ Gudang::RELS_KONTEN.each do |k, v|
26
+ xml.Relationship(Id: k, **v)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,38 @@
1
+ module SistemKebut
2
+ module Peralatan
3
+ module Gudang
4
+ RELS_DOCUMENT_NS = { xmlns: :PACKAGE_RELATIONSHIP_VAL }
5
+ RELS_DOCUMENT_KONTEN = {
6
+ 'rId1' => { Type: :OFFICE_RELATIONSHIP_STYLE_VAL, Target: :LOKASI_STYLES },
7
+ 'rId2' => { Type: :OFFICE_RELATIONSHIP_NUMBER_VAL, Target: :LOKASI_WORD_NUMBERING },
8
+ 'rId3' => { Type: :OFFICE_RELATIONSHIP_FONT_VAL, Target: :LOKASI_FONT_TABLE },
9
+ 'rId4' => { Type: :OFFICE_RELATIONSHIP_SETTING_VAL, Target: :LOKASI_SETTINGS },
10
+ 'rId5' => { Type: :OFFICE_RELATIONSHIP_THEME_VAL, Target: :LOKASI_THEME_THEME1 },
11
+ 'rId6' => { Type: :OFFICE_RELATIONSHIP_WEB_VAL, Target: :LOKASI_WEB_SETTINGS },
12
+ 'rId7' => { Type: :PURL_HEADER, Target: :LOKASI_PAGE_NUMBER },
13
+ 'rId8' => { Type: :PURL_FOOTER, Target: :LOKASI_FIRST_PAGE },
14
+ 'rId9' => { Type: :PURL_FOOTER, Target: :LOKASI_ROMAWI }
15
+ }
16
+ end
17
+
18
+ module KebutuhanDasar
19
+ def generate_rels_document
20
+ inner_generate_rels_document
21
+ .catat_administrasi(:LOKASI_WORD_RELS_DOCUMENT_RELS)
22
+ .catat_arsip
23
+ .struktur
24
+ end
25
+
26
+ private
27
+ def inner_generate_rels_document
28
+ SistemKebut::XML::Builder.new do |xml|
29
+ xml.Relationships(Gudang::RELS_DOCUMENT_NS) do
30
+ Gudang::RELS_DOCUMENT_KONTEN.each do |k, v|
31
+ xml.Relationship(Id: k, **v)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,89 @@
1
+ module SistemKebut
2
+ module Peralatan
3
+ module Gudang
4
+ SETTING = {
5
+ MARKUP_COMPAT: :MARKUP_COMPAT_VAL,
6
+ OFFICE_RELATIONSHIP: :OFFICE_RELATIONSHIP_VAL,
7
+ OFFICE: :OFFICE_VAL,
8
+ MATH: :MATH_VAL,
9
+ VML: :VML_VAL,
10
+ OFFICE_WORD: :OFFICE_WORD_VAL,
11
+ WORD_MAIN: :WORD_MAIN_VAL,
12
+ WORDML10: :WORDML10_VAL,
13
+ WORDML12: :WORDML12_VAL,
14
+ SCHEMA_INST: :SCHEMA_INST_VAL,
15
+ ATTR_IGNORABLE: :ATTR_IGNORABLE_VAL
16
+ }
17
+ SETTING_CLRSCHM = {
18
+ ATTR_SCHEMA_BACKGROUND1: :SCHEMA_BACKGROUND1_VAL,
19
+ ATTR_SCHEMA_TEXT1: :SCHEMA_TEXT1_VAL,
20
+ ATTR_SCHEMA_BACKGROUND2: :SCHEMA_BACKGROUND2_VAL,
21
+ ATTR_SCHEMA_TEXT2: :SCHEMA_TEXT2_VAL,
22
+ ATTR_SCHEMA_ACCENT1: :SCHEMA_ACCENT1_VAL,
23
+ ATTR_SCHEMA_ACCENT2: :SCHEMA_ACCENT2_VAL,
24
+ ATTR_SCHEMA_ACCENT3: :SCHEMA_ACCENT3_VAL,
25
+ ATTR_SCHEMA_ACCENT4: :SCHEMA_ACCENT4_VAL,
26
+ ATTR_SCHEMA_ACCENT5: :SCHEMA_ACCENT5_VAL,
27
+ ATTR_SCHEMA_ACCENT6: :SCHEMA_ACCENT6_VAL,
28
+ ATTR_SCHEMA_HYPERLINK: :SCHEMA_HYPERLINK_VAL,
29
+ ATTR_SCHEMA_FOLHYPERLINK: :SCHEMA_FOLHYPERLINK_VAL
30
+ }
31
+ end
32
+
33
+ module KebutuhanDasar
34
+ def generate_setting
35
+ inner_generate_setting
36
+ .catat_administrasi(:LOKASI_WORD_SETTINGS)
37
+ .catat_arsip
38
+ .struktur
39
+ end
40
+
41
+ private
42
+ def inner_generate_setting
43
+ SistemKebut::XML::Builder.new do |xml|
44
+ xml.settings(Gudang::SETTING) do
45
+ xml.zoom(ATTR_ZOOM: '80')
46
+ xml.defaultTabStop('w:val' => '720')
47
+ xml.characterSpacingControl('w:val' => :CHARACTER_SPACING_VAL)
48
+ xml.compat do
49
+ xml.compatSetting(ATTR_NAME: :COMPAT_MODE_VAL, ATTR_URI: :MICROSOFT_WORD, 'w:val' => '15')
50
+ xml.compatSetting(ATTR_NAME: :COMPAT_OVERRIDE_VAL, ATTR_URI: :MICROSOFT_WORD, 'w:val' => '1')
51
+ xml.compatSetting(ATTR_NAME: :COMPAT_MIRROR_VAL, ATTR_URI: :MICROSOFT_WORD, 'w:val' => '1')
52
+ xml.compatSetting(ATTR_NAME: :COMPAT_MULTIROW_HEADER_VAL, ATTR_URI: :MICROSOFT_WORD, 'w:val' => '1')
53
+ end
54
+ xml.rsids do
55
+ xml.rsidRoot('w:val' => :RSID_ROOT_VAL)
56
+ xml.rsid('w:val' => :RSID_VAL)
57
+ xml.rsid('w:val' => :RSID_ROOT_VAL)
58
+ end
59
+ xml.mathPr do
60
+ xml.mathFont(ATTR_MATHPR_MATH: :CAMBRIA_VAL)
61
+ xml.brkBin(ATTR_MATHPR_MATH: :MATHPR_BREAK_VAL)
62
+ xml.brkBinSub(ATTR_MATHPR_MATH: :MATHPR_SUB_BREAK_VAL)
63
+ xml.smallFrac(ATTR_MATHPR_MATH: '0')
64
+ xml.dispDef
65
+ xml.lMargin(ATTR_MATHPR_MATH: '0')
66
+ xml.rMargin(ATTR_MATHPR_MATH: '0')
67
+ xml.defJc(ATTR_MATHPR_MATH: :MATHPR_JCDEF_VAL)
68
+ xml.wrapIndent(ATTR_MATHPR_MATH: '1440')
69
+ xml.intLim(ATTR_MATHPR_MATH: :MATHPR_LIMIT1_VAL)
70
+ xml.naryLim(ATTR_MATHPR_MATH: :MATHPR_LIMIT2_VAL)
71
+ end
72
+ xml.themeFontLang('w:val' => :THEME_FONT_EN_US, ATTR_BIDI: :THEME_FONT_AR_SA)
73
+ xml.clrSchemeMapping(Gudang::SETTING_CLRSCHM)
74
+ xml.shapeDefaults do
75
+ xml.shapedefaults(ATTR_SHAPE_EXT: :SHAPE_EDIT_VAL, SHAPE_SPIDMAX_VAL: '1026')
76
+ xml.shapelayout(ATTR_SHAPE_EXT: :SHAPE_EDIT_VAL) do
77
+ xml.idmap(ATTR_SHAPE_EXT: :SHAPE_EDIT_VAL, SHAPE_DATA_VAL: '1')
78
+ end
79
+ end
80
+ xml.decimalSymbol('w:val' => :SYMBOL_DECIMAL)
81
+ xml.listSeparator('w:val' => :SYMBOL_LIST_SEP)
82
+ xml.chartTrackingRefBased
83
+ xml.docId(ATTR_DOCID: :DOCID_VAL)
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end