puredocx 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/lib/puredocx.rb +43 -0
  3. data/lib/puredocx/constructors/image_size.rb +49 -0
  4. data/lib/puredocx/constructors/rels.rb +57 -0
  5. data/lib/puredocx/constructors/table_column.rb +45 -0
  6. data/lib/puredocx/doc_archive.rb +106 -0
  7. data/lib/puredocx/document.rb +49 -0
  8. data/lib/puredocx/exceptions.rb +7 -0
  9. data/lib/puredocx/xml_generators/base.rb +24 -0
  10. data/lib/puredocx/xml_generators/cell.rb +23 -0
  11. data/lib/puredocx/xml_generators/image.rb +89 -0
  12. data/lib/puredocx/xml_generators/row.rb +28 -0
  13. data/lib/puredocx/xml_generators/table.rb +94 -0
  14. data/lib/puredocx/xml_generators/text.rb +34 -0
  15. data/lib/template/[Content_Types].xml +2 -0
  16. data/lib/template/brake.xml +1 -0
  17. data/lib/template/docProps/app.xml +2 -0
  18. data/lib/template/docProps/core.xml +2 -0
  19. data/lib/template/float_image.xml +1 -0
  20. data/lib/template/image.xml +1 -0
  21. data/lib/template/new_page.xml +1 -0
  22. data/lib/template/paragraph.xml +1 -0
  23. data/lib/template/table/cells.xml +1 -0
  24. data/lib/template/table/rows.xml +1 -0
  25. data/lib/template/table/table.xml +1 -0
  26. data/lib/template/word/document.xml +2 -0
  27. data/lib/template/word/endnotes.xml +2 -0
  28. data/lib/template/word/fontTable.xml +2 -0
  29. data/lib/template/word/footer1.xml +2 -0
  30. data/lib/template/word/footnotes.xml +2 -0
  31. data/lib/template/word/header1.xml +2 -0
  32. data/lib/template/word/settings.xml +2 -0
  33. data/lib/template/word/styles.xml +2 -0
  34. data/lib/template/word/theme/theme1.xml +2 -0
  35. data/lib/template/word/webSettings.xml +2 -0
  36. metadata +135 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: aeba1f5235a529c2476286d7febe4abf9b8bc518
4
+ data.tar.gz: f37e4e62ef885058218ff47761d6f67b0ea42a44
5
+ SHA512:
6
+ metadata.gz: 0e54b76f1b656f5115a6b64c79ace96e92bfc342e67283f411ad5a4ad97f7bd0fba51d87ceef0e8e3aa065f0474736e57534f44258901b3b41187b25ba50aa31
7
+ data.tar.gz: 4a5671c02709f64676d495befcafbd9d229613ccc984fab85acb867a82e521797e7a58271c97f1d48361c02868328d6cd3230369bddcc58764d7148452298d22
data/lib/puredocx.rb ADDED
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+ require 'securerandom'
3
+ require 'fastimage'
4
+ require 'zip'
5
+
6
+ module PureDocx
7
+ def self.included(base)
8
+ base.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+ def create(file_path, options = {})
13
+ doc = Document.new(file_path, options)
14
+
15
+ yield doc if block_given?
16
+
17
+ doc.save!
18
+ end
19
+ end
20
+
21
+ class Basement
22
+ include PureDocx
23
+ end
24
+
25
+ def self.create(*args, &block)
26
+ Basement.create(*args, &block)
27
+ end
28
+ end
29
+
30
+ require_relative 'puredocx/document'
31
+ require_relative 'puredocx/doc_archive'
32
+ require_relative 'puredocx/exceptions'
33
+
34
+ require_relative 'puredocx/constructors/rels'
35
+ require_relative 'puredocx/constructors/image_size'
36
+ require_relative 'puredocx/constructors/table_column'
37
+
38
+ require_relative 'puredocx/xml_generators/base'
39
+ require_relative 'puredocx/xml_generators/image'
40
+ require_relative 'puredocx/xml_generators/text'
41
+ require_relative 'puredocx/xml_generators/table'
42
+ require_relative 'puredocx/xml_generators/row'
43
+ require_relative 'puredocx/xml_generators/cell'
@@ -0,0 +1,49 @@
1
+ module PureDocx
2
+ module Constructors
3
+ class ImageSize
4
+ MAX_IMAGE_WIDTH = 650
5
+ PX_EMU = 8625
6
+
7
+ attr_reader :width, :height, :real_width, :real_height
8
+
9
+ def initialize(arguments = {})
10
+ @width, @height = arguments[:user_params]
11
+ @real_width, @real_height = arguments[:real_params]
12
+ end
13
+
14
+ def prepare_size
15
+ new_width, new_height = set_new_size_params
16
+ new_width, new_height = scaled_params(new_width, new_height) if new_width > MAX_IMAGE_WIDTH
17
+ { width: new_width, height: new_height }.map { |key, value| [key, (value * PX_EMU)] }.to_h
18
+ end
19
+
20
+ private
21
+
22
+ def set_new_size_params
23
+ return [real_width, real_height] if image_size_params_nil?
24
+ return [width, height] if image_size_params_present?
25
+ calculate_params
26
+ end
27
+
28
+ def image_size_params_nil?
29
+ [height, width].all?(&:nil?)
30
+ end
31
+
32
+ def image_size_params_present?
33
+ [height, width].none?(&:nil?)
34
+ end
35
+
36
+ def calculate_params
37
+ [
38
+ (width || height * real_width / real_height),
39
+ (height || width * real_height / real_width)
40
+ ]
41
+ end
42
+
43
+ def scaled_params(width, height)
44
+ size_factor = width.to_f / MAX_IMAGE_WIDTH
45
+ [width, height].map { |value| size_factor > 1 ? (value / size_factor).to_i : value }
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,57 @@
1
+ module PureDocx
2
+ module Constructors
3
+ class Rels
4
+ DOCUMENT_RELATIONSHIPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/'.freeze
5
+ PACKAGE__RELATIONSHIPS = 'http://schemas.openxmlformats.org/package/2006/relationships/'.freeze
6
+ BASIC_RELS = {
7
+ 'docProps/core.xml' => "#{PACKAGE__RELATIONSHIPS}metadata/core-properties",
8
+ 'docProps/app.xml' => "#{DOCUMENT_RELATIONSHIPS}extended-properties"
9
+ }.freeze
10
+ WORD_RELS = {
11
+ 'endnotes.xml' => "#{DOCUMENT_RELATIONSHIPS}endnotes",
12
+ 'footnotes.xml' => "#{DOCUMENT_RELATIONSHIPS}footnotes",
13
+ 'header1.xml' => "#{DOCUMENT_RELATIONSHIPS}header",
14
+ 'footer1.xml' => "#{DOCUMENT_RELATIONSHIPS}footer",
15
+ 'styles.xml' => "#{DOCUMENT_RELATIONSHIPS}styles",
16
+ 'settings.xml' => "#{DOCUMENT_RELATIONSHIPS}settings",
17
+ 'webSettings.xml' => "#{DOCUMENT_RELATIONSHIPS}webSettings",
18
+ 'fontTable.xml' => "#{DOCUMENT_RELATIONSHIPS}fontTable",
19
+ 'theme/theme1.xml' => "#{DOCUMENT_RELATIONSHIPS}theme"
20
+ }.freeze
21
+
22
+ attr_accessor :basic_rels, :word_rels, :header_rels
23
+
24
+ def initialize
25
+ @basic_rels = BASIC_RELS.dup
26
+ @word_rels = WORD_RELS.dup
27
+ @header_rels = {}
28
+ end
29
+
30
+ def rels
31
+ {
32
+ basic_rels: basic_rels,
33
+ word_rels: word_rels,
34
+ header_rels: header_rels
35
+ }
36
+ end
37
+
38
+ def prepare_basic_rels!
39
+ basic_rels.merge!('word/document.xml' => "#{DOCUMENT_RELATIONSHIPS}officeDocument")
40
+ end
41
+
42
+ def prepare_word_rels!(file_path, file_name)
43
+ word_rels.merge! prepare_rels_for_attached_image(file_path, file_name)
44
+ end
45
+
46
+ def prepare_header_rels!(file_path, file_name)
47
+ header_rels.merge! prepare_rels_for_attached_image(file_path, file_name)
48
+ end
49
+
50
+ private
51
+
52
+ def prepare_rels_for_attached_image(file_path, file_name)
53
+ { "media/#{file_name}" => ["#{DOCUMENT_RELATIONSHIPS}image", file_path] }
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,45 @@
1
+ module PureDocx
2
+ module Constructors
3
+ class TableColumn
4
+ MAX_TABLE_WIDTH = 9_355
5
+
6
+ attr_reader :client_columns_width, :columns_count
7
+
8
+ def initialize(client_table_width, client_columns_width, columns_count)
9
+ @client_table_width = client_table_width
10
+ @client_columns_width = client_columns_width
11
+ @columns_count = columns_count
12
+ end
13
+
14
+ def columns_width
15
+ default_width = calculate_default_width
16
+ ensure_correct_table_max_width! unless total_params_width.nil?
17
+
18
+ return [default_width] * columns_count if client_columns_width.nil?
19
+ client_columns_width.map { |item| item.nil? ? default_width : item }
20
+ end
21
+
22
+ def table_width
23
+ @client_table_width || MAX_TABLE_WIDTH
24
+ end
25
+
26
+ def total_params_width
27
+ @total_params_width ||= client_columns_width&.compact&.inject(:+)
28
+ end
29
+
30
+ def calculate_default_width
31
+ return (table_width / columns_count) if client_columns_width.nil?
32
+ return (table_width - total_params_width / 1) if client_columns_width.none?(&:nil?)
33
+ ((table_width - total_params_width) / client_columns_width.select(&:nil?).size)
34
+ end
35
+
36
+ private
37
+
38
+ def ensure_correct_table_max_width!
39
+ return unless total_params_width > MAX_TABLE_WIDTH
40
+ msg = %(Wrong table width: #{total_params_width}, please change it! Table width should be 10000.)
41
+ raise TableColumnsWidthError, msg
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,106 @@
1
+ module PureDocx
2
+ class DocArchive
3
+ HEADER_TEMPLATE_PATH = 'word/header1.xml'.freeze
4
+ FOOTER_TEMPLATE_PATH = 'word/footer1.xml'.freeze
5
+ DOCUMENT_TEMPLATE_PATH = 'word/document.xml'.freeze
6
+
7
+ attr_reader :io, :basic_rels, :word_rels, :header_rels
8
+
9
+ def initialize(io, rels)
10
+ @io = io
11
+ @basic_rels = rels[:basic_rels]
12
+ @word_rels = rels[:word_rels]
13
+ @header_rels = rels[:header_rels]
14
+ end
15
+
16
+ def self.open(file_path, rels)
17
+ Zip::File.open(file_path, Zip::File::CREATE) do |zip_file|
18
+ file = new(zip_file, rels)
19
+ yield file
20
+ end
21
+ end
22
+
23
+ def add(file, path)
24
+ io.add(file, path)
25
+ end
26
+
27
+ def save_document_content(content, header, pagination_position)
28
+ document_colontitle!(header, HEADER_TEMPLATE_PATH)
29
+ document_colontitle!(pagination_position, FOOTER_TEMPLATE_PATH)
30
+
31
+ io.get_output_stream(DOCUMENT_TEMPLATE_PATH) do |os|
32
+ os.write document_content(content, header, pagination_position)
33
+ end
34
+ end
35
+
36
+ def save_rels
37
+ add_rels!('_rels/.rels', basic_rels)
38
+ add_rels!('_rels/document.xml.rels', word_rels, 'word/') unless word_rels.empty?
39
+ add_rels!('_rels/header1.xml.rels', header_rels, 'word/') unless header_rels.empty?
40
+ end
41
+
42
+ def add_rels!(file_name, rels, path = '')
43
+ generate_template_files!(rels, path)
44
+ generate_files_with_rels_extension!(file_name, rels, path)
45
+ end
46
+
47
+ def generate_template_files!(rels, path)
48
+ rels.each do |target_path, (_, image_path)|
49
+ pathfile = image_path || self.class.template_path(File.join(path, target_path))
50
+ io.add("#{path}#{target_path}", pathfile)
51
+ end
52
+ end
53
+
54
+ def generate_files_with_rels_extension!(file_name, rels, path)
55
+ io.get_output_stream("#{path}#{file_name}") do |os|
56
+ os.write(
57
+ <<~HEREDOC.gsub(/\s+/, ' ').strip
58
+ <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n
59
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
60
+ #{rels_content(rels)}
61
+ </Relationships>
62
+ HEREDOC
63
+ )
64
+ end
65
+ end
66
+
67
+ def document_content(content, header, pagination_position)
68
+ header_reference = colontitle_reference_xml('headerReference', 'header1.xml') unless header.empty?
69
+ footer_reference = colontitle_reference_xml('footerReference', 'footer1.xml') if pagination_position
70
+
71
+ File.read(self.class.template_path(DOCUMENT_TEMPLATE_PATH)).tap do |document_content|
72
+ document_content.gsub!('{HEADER}', header_reference || '')
73
+ document_content.gsub!('{CONTENT}', content)
74
+ document_content.gsub!('{FOOTER}', footer_reference || '')
75
+ end
76
+ end
77
+
78
+ def document_colontitle!(content, content_path)
79
+ content_xml = File.read(self.class.template_path(content_path))
80
+ content_xml.gsub!('{CONTENT}', content || '')
81
+ io.get_output_stream(content_path) { |os| os.write content_xml }
82
+ end
83
+
84
+ def colontitle_reference_xml(reference_name, file_name)
85
+ <<-HEREDOC.gsub(/\s+/, ' ').strip
86
+ <w:#{reference_name}
87
+ r:id="rId#{word_rels.keys.index(file_name)}"
88
+ w:type="default"/>
89
+ HEREDOC
90
+ end
91
+
92
+ def rels_content(rels)
93
+ rels.map.with_index do |(target_path, (target_type, _)), index|
94
+ %(<Relationship Id="rId#{index}" Type="#{target_type}" Target="#{target_path}"/>)
95
+ end.join
96
+ end
97
+
98
+ def self.template_path(file_name)
99
+ File.join(dir_path, 'template', file_name)
100
+ end
101
+
102
+ def self.dir_path
103
+ Pathname.new(__FILE__).expand_path.parent.dirname
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,49 @@
1
+ module PureDocx
2
+ class Document
3
+ attr_accessor :body_content, :header_content
4
+ attr_reader :file_path, :file_name, :brake, :new_page, :rels_constructor, :pagination_position
5
+
6
+ def initialize(file_path, arguments = {})
7
+ @file_path = file_path
8
+ ensure_file!
9
+ @file_name = File.basename(file_path)
10
+ @pagination_position = arguments[:pagination_position]
11
+ @rels_constructor = PureDocx::Constructors::Rels.new
12
+ @brake = File.read(DocArchive.template_path('brake.xml'))
13
+ @new_page = File.read(DocArchive.template_path('new_page.xml'))
14
+ @header_content = ''
15
+ @body_content = ''
16
+ (class << self; self; end).class_eval do
17
+ [:text, :table, :image].each do |method_name|
18
+ define_method method_name do |content, options = {}|
19
+ Object.const_get(
20
+ "PureDocx::XmlGenerators::#{method_name.to_s.capitalize}"
21
+ ).new(content, rels_constructor, options).xml
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ def header(items)
28
+ self.header_content += items.join
29
+ end
30
+
31
+ def content(items)
32
+ self.body_content += items.join
33
+ end
34
+
35
+ def ensure_file!
36
+ return unless File.exist?(file_path)
37
+ raise FileCreatingError, 'File already exists in this directory. Please change the file name!'
38
+ end
39
+
40
+ def save!
41
+ rels_constructor.prepare_basic_rels!
42
+ DocArchive.open(file_path, rels_constructor.rels) do |file|
43
+ file.add('[Content_Types].xml', DocArchive.template_path('[Content_Types].xml'))
44
+ file.save_rels
45
+ file.save_document_content(body_content, header_content, pagination_position)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,7 @@
1
+ module PureDocx
2
+ FileCreatingError = Class.new(StandardError)
3
+ ImageReadingError = Class.new(StandardError)
4
+ NoImageDirectoryPathError = Class.new(StandardError)
5
+ TableColumnsWidthError = Class.new(StandardError)
6
+ TableColumnsCountError = Class.new(StandardError)
7
+ end
@@ -0,0 +1,24 @@
1
+ module PureDocx
2
+ module XmlGenerators
3
+ class Base
4
+ attr_reader :content, :rels_constructor
5
+
6
+ def initialize(content, rels_constructor)
7
+ @content = content
8
+ @rels_constructor = rels_constructor
9
+ end
10
+
11
+ def xml
12
+ params.each_with_object(template.clone) { |(param, value), memo| memo.gsub!(param, value.to_s) }
13
+ end
14
+
15
+ def template
16
+ raise NotImplementedError, "#{__method__} is not implemented."
17
+ end
18
+
19
+ def params
20
+ {}
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ module PureDocx
2
+ module XmlGenerators
3
+ class Cell < Base
4
+ attr_reader :width
5
+
6
+ def initialize(content, rels_constructor, arguments = {})
7
+ super(content, rels_constructor)
8
+ @width = arguments[:width]
9
+ end
10
+
11
+ def template
12
+ File.read(DocArchive.template_path('table/cells.xml'))
13
+ end
14
+
15
+ def params
16
+ {
17
+ '{CONTENT}' => content[:column].map(&:chomp).join,
18
+ '{WIDTH}' => width
19
+ }
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,89 @@
1
+ module PureDocx
2
+ module XmlGenerators
3
+ class Image < Base
4
+ attr_reader :width,
5
+ :height,
6
+ :image_path,
7
+ :image_name,
8
+ :in_header,
9
+ :align,
10
+ :rels_id,
11
+ :size_constructor
12
+
13
+ def initialize(image_path, rels_constructor, arguments = {})
14
+ super(nil, rels_constructor)
15
+ @image_path = image_path
16
+ @image_name = File.basename(image_path)
17
+ ensure_file!
18
+ @width = arguments[:width]
19
+ @height = arguments[:height]
20
+ @in_header = arguments[:in_header]
21
+ @align = arguments[:align]
22
+ @rels_id = "rId#{appropriated_rels_size}"
23
+ @size_constructor = PureDocx::Constructors::ImageSize.new(
24
+ user_params: [width, height],
25
+ real_params: FastImage.size(image_path)
26
+ )
27
+ end
28
+
29
+ def xml
30
+ add_image_rels
31
+ super
32
+ end
33
+
34
+ def params
35
+ align_params = { horizontal: '', vertical: '' }
36
+ align_params.merge! prepare_align_params(align) if align
37
+ {
38
+ '{WIDTH}' => size_constructor.prepare_size[:width],
39
+ '{HEIGHT}' => size_constructor.prepare_size[:height],
40
+ '{RID}' => rels_id,
41
+ '{NAME}' => image_name,
42
+ '{UNIQUE_NAME}' => uniq_name(image_name),
43
+ '{HORIZONTAL_ALIGN}' => align_params[:horizontal],
44
+ '{VERTICAL_ALIGN}' => align_params[:vertical]
45
+ }
46
+ end
47
+
48
+ def template
49
+ return File.read(DocArchive.template_path('float_image.xml')) if align&.any?
50
+ File.read(DocArchive.template_path('image.xml'))
51
+ end
52
+
53
+ private
54
+
55
+ def uniq_name(image_name)
56
+ "image_#{SecureRandom.uuid}#{File.extname(image_name)}"
57
+ end
58
+
59
+ def ensure_file!
60
+ raise ImageReadingError, "The #{image_name} not found!" unless File.exist?(image_path)
61
+ end
62
+
63
+ def add_image_rels
64
+ return rels_constructor.prepare_header_rels!(image_path, uniq_name(image_name)) if in_header?
65
+ rels_constructor.prepare_word_rels!(image_path, uniq_name(image_name))
66
+ end
67
+
68
+ def in_header?
69
+ in_header
70
+ end
71
+
72
+ def appropriated_rels_size
73
+ rels_constructor.rels[(in_header? && :header_rels) || :word_rels].size
74
+ end
75
+
76
+ def prepare_align_params(align_params)
77
+ align = {
78
+ horizontal: :left,
79
+ vertical: :top
80
+ }
81
+ align_params.each do |item|
82
+ align[:horizontal] = item if item == :right || item == :left
83
+ align[:vertical] = item if item == :bottom || item == :top
84
+ end
85
+ align
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,28 @@
1
+ module PureDocx
2
+ module XmlGenerators
3
+ class Row < Base
4
+ attr_reader :cells_width
5
+
6
+ def initialize(content, rels_constructor, arguments = {})
7
+ super(content, rels_constructor)
8
+ @cells_width = arguments[:cells_width]
9
+ end
10
+
11
+ def template
12
+ File.read(DocArchive.template_path('table/rows.xml'))
13
+ end
14
+
15
+ def params
16
+ { '{CELLS}' => cells }
17
+ end
18
+
19
+ private
20
+
21
+ def cells
22
+ content.each_with_index.map do |cell_content, index|
23
+ PureDocx::XmlGenerators::Cell.new(cell_content, nil, width: cells_width[index]).xml
24
+ end.join
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,94 @@
1
+ module PureDocx
2
+ module XmlGenerators
3
+ class Table < Base
4
+ WITHOUT_BORDER_VALUES = { value: '', default_value: 'single' }.freeze
5
+ BOLD_BORDER_VALUES = { value: '18', default_value: '4' }.freeze
6
+ attr_reader :table_content,
7
+ :columns_count,
8
+ :columns_width,
9
+ :sides_without_border,
10
+ :bold_sides,
11
+ :received_table_width,
12
+ :received_col_width
13
+
14
+ def initialize(table_content, _rels_constructor, arguments = {})
15
+ @table_content = table_content || []
16
+ @columns_count = table_content[0].size
17
+ @received_table_width = arguments[:table_width]
18
+ @received_col_width = arguments[:col_width]
19
+ @columns_width = columns_width
20
+ ensure_columns_count!
21
+ @sides_without_border = prepare_sides(WITHOUT_BORDER_VALUES, arguments[:sides_without_border])
22
+ @bold_sides = prepare_sides(BOLD_BORDER_VALUES, arguments[:bold_sides])
23
+ @paddings = arguments[:paddings] || {}
24
+ end
25
+
26
+ def template
27
+ File.read(DocArchive.template_path('table/table.xml'))
28
+ end
29
+
30
+ def params
31
+ {
32
+ '{TABLE_WIDTH}' => table_width,
33
+ '{PADDING_TOP}' => @paddings.fetch(:top, 0),
34
+ '{PADDING_BOTTOM}' => @paddings.fetch(:bottom, 0),
35
+ '{PADDING_LEFT}' => @paddings.fetch(:left, 0),
36
+ '{PADDING_RIGHT}' => @paddings.fetch(:right, 0),
37
+ '{BORDER_TOP}' => sides_without_border[:top],
38
+ '{BORDER_BOTTOM}' => sides_without_border[:bottom],
39
+ '{BORDER_LEFT}' => sides_without_border[:left],
40
+ '{BORDER_RIGHT}' => sides_without_border[:right],
41
+ '{BORDER_INSIDE_H}' => sides_without_border[:inside_h],
42
+ '{BORDER_INSIDE_V}' => sides_without_border[:inside_v],
43
+ '{BORDER_TOP_SIZE}' => bold_sides[:top],
44
+ '{BORDER_BOTTOM_SIZE}' => bold_sides[:bottom],
45
+ '{BORDER_LEFT_SIZE}' => bold_sides[:left],
46
+ '{BORDER_RIGHT_SIZE}' => bold_sides[:right],
47
+ '{BORDER_INSIDE_H_SIZE}' => bold_sides[:inside_h],
48
+ '{BORDER_INSIDE_V_SIZE}' => bold_sides[:inside_v],
49
+ '{GRID_OPTIONS}' => table_grid,
50
+ '{ROWS}' => rows
51
+ }
52
+ end
53
+
54
+ private
55
+
56
+ def rows
57
+ table_content.map do |row_content|
58
+ PureDocx::XmlGenerators::Row.new(row_content, nil, cells_width: columns_width).xml
59
+ end.join
60
+ end
61
+
62
+ def table_builder
63
+ @table_builder ||= PureDocx::Constructors::TableColumn.new(
64
+ received_table_width,
65
+ received_col_width,
66
+ columns_count
67
+ )
68
+ end
69
+
70
+ def columns_width
71
+ table_builder.columns_width
72
+ end
73
+
74
+ def table_width
75
+ table_builder.table_width
76
+ end
77
+
78
+ def ensure_columns_count!
79
+ return unless table_content.any? { |row| row.size != columns_count } || columns_width.size != columns_count
80
+ raise TableColumnsCountError, 'Wrong table columns count!'
81
+ end
82
+
83
+ def table_grid
84
+ columns_width.map { |column_width| %(<w:gridCol w:w="#{column_width}"/>) }.join
85
+ end
86
+
87
+ def prepare_sides(border_type_value, params = [])
88
+ [:right, :left, :top, :bottom, :inside_h, :inside_v].map do |item|
89
+ [item, params&.include?(item) ? border_type_value[:value] : border_type_value[:default_value]]
90
+ end.to_h
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,34 @@
1
+ require 'cgi'
2
+
3
+ module PureDocx
4
+ module XmlGenerators
5
+ class Text < Base
6
+ DEFAULT_TEXT_SIZE = 28
7
+ DEFAULT_TEXT_ALIGN = 'left'.freeze
8
+ attr_reader :bold_enable, :italic_enable, :align, :size
9
+
10
+ def initialize(content, rels_constructor, arguments = {})
11
+ super(nil, rels_constructor)
12
+ @content = CGI.escapeHTML(content)
13
+ @bold_enable = [*arguments[:style]].include?(:bold)
14
+ @italic_enable = [*arguments[:style]].include?(:italic)
15
+ @align = arguments[:align] || DEFAULT_TEXT_ALIGN
16
+ @size = arguments[:size] || DEFAULT_TEXT_SIZE
17
+ end
18
+
19
+ def params
20
+ {
21
+ '{TEXT}' => content,
22
+ '{ALIGN}' => align,
23
+ '{BOLD_ENABLE}' => bold_enable,
24
+ '{ITALIC_ENABLE}' => italic_enable,
25
+ '{SIZE}' => size
26
+ }
27
+ end
28
+
29
+ def template
30
+ File.read(DocArchive.template_path('paragraph.xml'))
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="jpeg" ContentType="image/jpeg"/><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Default Extension="jpg" ContentType="image/jpeg"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/><Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/><Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/><Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/><Override PartName="/word/footnotes.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml"/><Override PartName="/word/endnotes.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml"/><Override PartName="/word/header1.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml"/><Override PartName="/word/footer1.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml"/><Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/><Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/><Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/></Types>
@@ -0,0 +1 @@
1
+ <w:p w:rsidR="00C05B10" w:rsidDefault="00C05B10"/>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Template>Normal.dotm</Template><TotalTime>0</TotalTime><Pages>1</Pages><Words>0</Words><Characters>0</Characters><Application>Microsoft Office Word</Application><DocSecurity>0</DocSecurity><Lines>0</Lines><Paragraphs>0</Paragraphs><ScaleCrop>false</ScaleCrop><Company></Company><LinksUpToDate>false</LinksUpToDate><CharactersWithSpaces>0</CharactersWithSpaces><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>14.0000</AppVersion></Properties>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:title></dc:title><dc:subject></dc:subject><dc:creator>Asus</dc:creator><cp:keywords></cp:keywords><dc:description></dc:description><cp:lastModifiedBy>Asus</cp:lastModifiedBy><cp:revision>3</cp:revision><dcterms:created xsi:type="dcterms:W3CDTF">2012-02-21T13:15:00Z</dcterms:created><dcterms:modified xsi:type="dcterms:W3CDTF">2012-02-21T13:15:00Z</dcterms:modified></cp:coreProperties>
@@ -0,0 +1 @@
1
+ <w:p w:rsidR="000E3348" w:rsidRDefault="00CD6FED"><w:r><w:rPr><w:noProof/><w:lang w:eastAsia="en-US"/></w:rPr><w:drawing><wp:anchor behindDoc="0" distT="0" distB="0" distL="38100" distR="0" simplePos="0" locked="0" layoutInCell="1" allowOverlap="1" relativeHeight="2"><wp:simplePos x="0" y="0"/><wp:positionH relativeFrom="column"><wp:align>{HORIZONTAL_ALIGN}</wp:align></wp:positionH><wp:positionV relativeFrom="page"><wp:align>{VERTICAL_ALIGN}</wp:align></wp:positionV><wp:extent cx="{WIDTH}" cy="{HEIGHT}"/><wp:effectExtent l="0" t="0" r="0" b="0"/><wp:wrapSquare wrapText="largest"/><wp:docPr id="2" name="{NAME}"/><wp:cNvGraphicFramePr><a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/></wp:cNvGraphicFramePr><a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:nvPicPr><pic:cNvPr id="0" name="{UNIQUE_NAME}"/><pic:cNvPicPr/></pic:nvPicPr><pic:blipFill><a:blip r:embed="{RID}"><a:extLst><a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}"><a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/></a:ext></a:extLst></a:blip><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="{WIDTH}" cy="{HEIGHT}"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln><a:noFill/></a:ln></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:anchor></w:drawing></w:r></w:p>
@@ -0,0 +1 @@
1
+ <w:p w:rsidR="000E3348" w:rsidRDefault="00CD6FED"><w:r><w:rPr><w:noProof/><w:lang w:eastAsia="en-US"/></w:rPr><w:drawing><wp:inline distT="0" distB="0" distL="0" distR="0"><wp:extent cx="{WIDTH}" cy="{HEIGHT}"/><wp:effectExtent l="19050" t="0" r="0" b="0"/><wp:docPr id="2" name="{NAME}"/><wp:cNvGraphicFramePr><a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/></wp:cNvGraphicFramePr><a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:nvPicPr><pic:cNvPr id="0" name="{UNIQUE_NAME}"/><pic:cNvPicPr/></pic:nvPicPr><pic:blipFill><a:blip r:embed="{RID}"><a:extLst><a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}"><a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/></a:ext></a:extLst></a:blip><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="{WIDTH}" cy="{HEIGHT}"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln><a:noFill/></a:ln></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r></w:p>
@@ -0,0 +1 @@
1
+ <w:p><w:pPr><w:pStyle w:val="TextBody"/><w:rPr/></w:pPr><w:r><w:rPr/></w:r><w:r><w:br w:type="page"/></w:r></w:p>
@@ -0,0 +1 @@
1
+ <w:p><w:pPr><w:pStyle w:val="Normal"/><w:jc w:val="{ALIGN}"/><w:rPr/></w:pPr><w:r><w:rPr><w:b w:val="{BOLD_ENABLE}"/><w:bCs w:val="{BOLD_ENABLE}"/><w:i w:val="{ITALIC_ENABLE}"/><w:iCs w:val="{ITALIC_ENABLE}"/><w:sz w:val="{SIZE}"/><w:lang w:val="en-US"/></w:rPr><w:t>{TEXT}</w:t></w:r></w:p>
@@ -0,0 +1 @@
1
+ <w:tc><w:tcPr><w:tcW w:w="{WIDTH}" w:type="dxa"/><w:shd w:fill="auto" w:val="clear"/></w:tcPr>{CONTENT}</w:tc>
@@ -0,0 +1 @@
1
+ <w:tr w:rsidR="00E806FD" w:rsidTr="00E806FD">{CELLS}</w:tr>
@@ -0,0 +1 @@
1
+ <w:tbl><w:tblPr><w:tblW w:w="{TABLE_WIDTH}" w:type="dxa"/><w:tblInd w:w="0" w:type="dxa"/><w:tblBorders><w:top w:val="{BORDER_TOP}" w:sz="{BORDER_TOP_SIZE}" w:space="0" w:color="auto"/><w:left w:val="{BORDER_LEFT}" w:sz="{BORDER_LEFT_SIZE}" w:space="0" w:color="auto"/><w:right w:val="{BORDER_RIGHT}" w:sz="{BORDER_RIGHT_SIZE}" w:space="0" w:color="auto"/><w:bottom w:val="{BORDER_BOTTOM}" w:sz="{BORDER_BOTTOM_SIZE}" w:space="0" w:color="auto"/><w:insideH w:val="{BORDER_INSIDE_H}" w:sz="{BORDER_INSIDE_H_SIZE}" w:space="0" w:color="auto"/><w:insideV w:val="{BORDER_INSIDE_V}" w:sz="{BORDER_INSIDE_V_SIZE}" w:space="0" w:color="auto"/></w:tblBorders><w:tblCellMar><w:top w:w="{PADDING_TOP}" w:type="dxa"/><w:left w:w="{PADDING_LEFT}" w:type="dxa"/><w:bottom w:w="{PADDING_BOTTOM}" w:type="dxa"/><w:right w:w="{PADDING_RIGHT}" w:type="dxa"/></w:tblCellMar><w:tblLook w:noVBand="1" w:noHBand="0" w:lastColumn="0" w:firstColumn="1" w:lastRow='0' w:firstRow='1' w:val="04A0"/></w:tblPr><w:tblGrid>{GRID_OPTIONS}</w:tblGrid>{ROWS}</w:tbl><w:p><w:pPr><w:pStyle w:val="Normal"/><w:rPr/></w:pPr><w:r><w:rPr/></w:r></w:p>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se wp14"><w:body>{CONTENT}<w:p w:rsidR="00D72138" w:rsidRDefault="00D72138"><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p><w:sectPr w:rsidR="000E3348">{HEADER}{FOOTER}<w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1134" w:right="850" w:bottom="1134" w:left="1701" w:header="708" w:footer="708" w:gutter="0"/><w:cols w:space="708"/><w:docGrid w:linePitch="360"/></w:sectPr></w:body></w:document>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:endnotes xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se wp14"><w:endnote w:type="separator" w:id="-1"><w:p w:rsidR="005440CB" w:rsidRDefault="005440CB" w:rsidP="00A91642"><w:pPr><w:spacing w:line="240" w:lineRule="auto"/></w:pPr><w:r><w:separator/></w:r></w:p></w:endnote><w:endnote w:type="continuationSeparator" w:id="0"><w:p w:rsidR="005440CB" w:rsidRDefault="005440CB" w:rsidP="00A91642"><w:pPr><w:spacing w:line="240" w:lineRule="auto"/></w:pPr><w:r><w:continuationSeparator/></w:r></w:p></w:endnote></w:endnotes>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:fonts xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14"><w:font w:name="Calibri"><w:panose1 w:val="020F0502020204030204"/><w:charset w:val="CC"/><w:family w:val="swiss"/><w:pitch w:val="variable"/><w:sig w:usb0="E10002FF" w:usb1="4000ACFF" w:usb2="00000009" w:usb3="00000000" w:csb0="0000019F" w:csb1="00000000"/></w:font><w:font w:name="Times New Roman"><w:panose1 w:val="02020603050405020304"/><w:charset w:val="CC"/><w:family w:val="roman"/><w:pitch w:val="variable"/><w:sig w:usb0="E0002AFF" w:usb1="C0007841" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/></w:font><w:font w:name="Cambria"><w:panose1 w:val="02040503050406030204"/><w:charset w:val="CC"/><w:family w:val="roman"/><w:pitch w:val="variable"/><w:sig w:usb0="E00002FF" w:usb1="400004FF" w:usb2="00000000" w:usb3="00000000" w:csb0="0000019F" w:csb1="00000000"/></w:font></w:fonts>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:ftr xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14 wp14"><w:p><w:pPr><w:pStyle w:val="Footer"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr></w:r></w:p><w:p><w:pPr><w:pStyle w:val="Footer"/><w:jc w:val="{CONTENT}"/><w:rPr></w:rPr></w:pPr><w:r><w:rPr></w:rPr><w:fldChar w:fldCharType="begin"></w:fldChar></w:r><w:r><w:instrText> PAGE </w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:t>5</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:p></w:ftr>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:footnotes xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se wp14"><w:footnote w:type="separator" w:id="-1"><w:p w:rsidR="005440CB" w:rsidRDefault="005440CB" w:rsidP="00A91642"><w:pPr><w:spacing w:line="240" w:lineRule="auto"/></w:pPr><w:r><w:separator/></w:r></w:p></w:footnote><w:footnote w:type="continuationSeparator" w:id="0"><w:p w:rsidR="005440CB" w:rsidRDefault="005440CB" w:rsidP="00A91642"><w:pPr><w:spacing w:line="240" w:lineRule="auto"/></w:pPr><w:r><w:continuationSeparator/></w:r></w:p></w:footnote></w:footnotes>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:hdr xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se wp14">{CONTENT}</w:hdr>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:settings xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" mc:Ignorable="w14"><w:zoom w:percent="110"/><w:proofState w:grammar="clean"/><w:defaultTabStop w:val="708"/><w:characterSpacingControl w:val="doNotCompress"/><w:compat><w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="14"/><w:compatSetting w:name="overrideTableStyleFontSizeAndJustification" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/><w:compatSetting w:name="enableOpenTypeFeatures" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/><w:compatSetting w:name="doNotFlipMirrorIndents" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/></w:compat><w:rsids><w:rsidRoot w:val="00AE4894"/><w:rsid w:val="00075C38"/><w:rsid w:val="00902263"/><w:rsid w:val="00AE4894"/><w:rsid w:val="00DE25AB"/></w:rsids><m:mathPr><m:mathFont m:val="Cambria Math"/><m:brkBin m:val="before"/><m:brkBinSub m:val="--"/><m:smallFrac m:val="0"/><m:dispDef/><m:lMargin m:val="0"/><m:rMargin m:val="0"/><m:defJc m:val="centerGroup"/><m:wrapIndent m:val="1440"/><m:intLim m:val="subSup"/><m:naryLim m:val="undOvr"/></m:mathPr><w:themeFontLang w:val="ru-RU"/><w:clrSchemeMapping w:bg1="light1" w:t1="dark1" w:bg2="light2" w:t2="dark2" w:accent1="accent1" w:accent2="accent2" w:accent3="accent3" w:accent4="accent4" w:accent5="accent5" w:accent6="accent6" w:hyperlink="hyperlink" w:followedHyperlink="followedHyperlink"/><w:shapeDefaults><o:shapedefaults v:ext="edit" spidmax="1026"/><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout></w:shapeDefaults><w:decimalSymbol w:val=","/><w:listSeparator w:val=";"/></w:settings>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:styles xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:asciiTheme="minorHAnsi" w:eastAsiaTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:cstheme="minorBidi"/><w:sz w:val="22"/><w:szCs w:val="22"/><w:lang w:val="en-US" w:bidi="ar-SA"/></w:rPr></w:rPrDefault><w:pPrDefault><w:pPr><w:spacing w:after="200" w:line="276" w:lineRule="auto"/></w:pPr></w:pPrDefault></w:docDefaults><w:latentStyles w:defLockedState="0" w:defUIPriority="99" w:defSemiHidden="1" w:defUnhideWhenUsed="1" w:defQFormat="0" w:count="267"><w:lsdException w:name="Normal" w:semiHidden="0" w:uiPriority="0" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="heading 1" w:semiHidden="0" w:uiPriority="9" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="heading 2" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="heading 3" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="heading 4" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="heading 5" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="heading 6" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="heading 7" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="heading 8" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="heading 9" w:uiPriority="9" w:qFormat="1"/><w:lsdException w:name="toc 1" w:uiPriority="39"/><w:lsdException w:name="toc 2" w:uiPriority="39"/><w:lsdException w:name="toc 3" w:uiPriority="39"/><w:lsdException w:name="toc 4" w:uiPriority="39"/><w:lsdException w:name="toc 5" w:uiPriority="39"/><w:lsdException w:name="toc 6" w:uiPriority="39"/><w:lsdException w:name="toc 7" w:uiPriority="39"/><w:lsdException w:name="toc 8" w:uiPriority="39"/><w:lsdException w:name="toc 9" w:uiPriority="39"/><w:lsdException w:name="caption" w:uiPriority="35" w:qFormat="1"/><w:lsdException w:name="Title" w:semiHidden="0" w:uiPriority="10" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Default Paragraph Font" w:uiPriority="1"/><w:lsdException w:name="Subtitle" w:semiHidden="0" w:uiPriority="11" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Strong" w:semiHidden="0" w:uiPriority="22" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Emphasis" w:semiHidden="0" w:uiPriority="20" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Table Grid" w:semiHidden="0" w:uiPriority="59" w:unhideWhenUsed="0"/><w:lsdException w:name="Placeholder Text" w:unhideWhenUsed="0"/><w:lsdException w:name="No Spacing" w:semiHidden="0" w:uiPriority="1" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Light Shading" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/><w:lsdException w:name="Light List" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Grid" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 1" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 2" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 1" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 2" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 1" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 2" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 3" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/><w:lsdException w:name="Dark List" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Shading" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful List" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Grid" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Shading Accent 1" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/><w:lsdException w:name="Light List Accent 1" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Grid Accent 1" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 1 Accent 1" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 2 Accent 1" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 1 Accent 1" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/><w:lsdException w:name="Revision" w:unhideWhenUsed="0"/><w:lsdException w:name="List Paragraph" w:semiHidden="0" w:uiPriority="34" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Quote" w:semiHidden="0" w:uiPriority="29" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Intense Quote" w:semiHidden="0" w:uiPriority="30" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Medium List 2 Accent 1" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 1 Accent 1" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 2 Accent 1" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 3 Accent 1" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/><w:lsdException w:name="Dark List Accent 1" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Shading Accent 1" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful List Accent 1" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Grid Accent 1" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Shading Accent 2" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/><w:lsdException w:name="Light List Accent 2" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Grid Accent 2" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 1 Accent 2" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 2 Accent 2" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 1 Accent 2" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 2 Accent 2" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 1 Accent 2" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 2 Accent 2" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 3 Accent 2" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/><w:lsdException w:name="Dark List Accent 2" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Shading Accent 2" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful List Accent 2" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Grid Accent 2" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Shading Accent 3" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/><w:lsdException w:name="Light List Accent 3" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Grid Accent 3" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 1 Accent 3" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 2 Accent 3" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 1 Accent 3" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 2 Accent 3" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 1 Accent 3" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 2 Accent 3" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 3 Accent 3" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/><w:lsdException w:name="Dark List Accent 3" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Shading Accent 3" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful List Accent 3" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Grid Accent 3" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Shading Accent 4" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/><w:lsdException w:name="Light List Accent 4" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Grid Accent 4" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 1 Accent 4" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 2 Accent 4" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 1 Accent 4" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 2 Accent 4" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 1 Accent 4" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 2 Accent 4" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 3 Accent 4" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/><w:lsdException w:name="Dark List Accent 4" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Shading Accent 4" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful List Accent 4" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Grid Accent 4" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Shading Accent 5" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/><w:lsdException w:name="Light List Accent 5" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Grid Accent 5" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 1 Accent 5" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 2 Accent 5" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 1 Accent 5" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 2 Accent 5" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 1 Accent 5" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 2 Accent 5" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 3 Accent 5" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/><w:lsdException w:name="Dark List Accent 5" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Shading Accent 5" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful List Accent 5" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Grid Accent 5" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Shading Accent 6" w:semiHidden="0" w:uiPriority="60" w:unhideWhenUsed="0"/><w:lsdException w:name="Light List Accent 6" w:semiHidden="0" w:uiPriority="61" w:unhideWhenUsed="0"/><w:lsdException w:name="Light Grid Accent 6" w:semiHidden="0" w:uiPriority="62" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 1 Accent 6" w:semiHidden="0" w:uiPriority="63" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Shading 2 Accent 6" w:semiHidden="0" w:uiPriority="64" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 1 Accent 6" w:semiHidden="0" w:uiPriority="65" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium List 2 Accent 6" w:semiHidden="0" w:uiPriority="66" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 1 Accent 6" w:semiHidden="0" w:uiPriority="67" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 2 Accent 6" w:semiHidden="0" w:uiPriority="68" w:unhideWhenUsed="0"/><w:lsdException w:name="Medium Grid 3 Accent 6" w:semiHidden="0" w:uiPriority="69" w:unhideWhenUsed="0"/><w:lsdException w:name="Dark List Accent 6" w:semiHidden="0" w:uiPriority="70" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Shading Accent 6" w:semiHidden="0" w:uiPriority="71" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful List Accent 6" w:semiHidden="0" w:uiPriority="72" w:unhideWhenUsed="0"/><w:lsdException w:name="Colorful Grid Accent 6" w:semiHidden="0" w:uiPriority="73" w:unhideWhenUsed="0"/><w:lsdException w:name="Subtle Emphasis" w:semiHidden="0" w:uiPriority="19" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Intense Emphasis" w:semiHidden="0" w:uiPriority="21" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Subtle Reference" w:semiHidden="0" w:uiPriority="31" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Intense Reference" w:semiHidden="0" w:uiPriority="32" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Book Title" w:semiHidden="0" w:uiPriority="33" w:unhideWhenUsed="0" w:qFormat="1"/><w:lsdException w:name="Bibliography" w:uiPriority="37"/><w:lsdException w:name="TOC Heading" w:uiPriority="39" w:qFormat="1"/></w:latentStyles><w:style w:type="paragraph" w:default="1" w:styleId="a"><w:name w:val="Normal"/><w:qFormat/><w:pPr><w:widowControl/><w:bidi w:val="0"/><w:spacing w:lineRule="auto" w:line="276" w:before="0" w:after="0"/><w:jc w:val="left"/></w:pPr><w:rPr><w:rFonts w:ascii="minorHAnsi" w:hAnsi="minorHAnsi" w:eastAsia="minorHAnsi" w:cs="" w:asciiTheme="minorHAnsi" w:cstheme="minorBidi" w:eastAsiaTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi"/><w:color w:val="auto"/><w:sz w:val="22"/><w:szCs w:val="22"/><w:lang w:val="en-US" w:eastAsia="en-US" w:bidi="ar-SA"/></w:rPr></w:style><w:style w:type="character" w:default="1" w:styleId="a0"><w:name w:val="Default Paragraph Font"/><w:uiPriority w:val="1"/><w:semiHidden/><w:unhideWhenUsed/></w:style><w:style w:type="table" w:default="1" w:styleId="a1"><w:name w:val="Normal Table"/><w:uiPriority w:val="99"/><w:semiHidden/><w:unhideWhenUsed/><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="numbering" w:default="1" w:styleId="a2"><w:name w:val="No List"/><w:uiPriority w:val="99"/><w:semiHidden/><w:unhideWhenUsed/></w:style></w:styles>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Тема Office"><a:themeElements><a:clrScheme name="Стандартная"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink><a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Стандартная"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS ゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Angsana New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS 明朝"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Cordia New"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/><a:font script="Geor" typeface="Sylfaen"/></a:minorFont></a:fontScheme><a:fmtScheme name="Стандартная"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <w:webSettings xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14"><w:optimizeForBrowser/><w:allowPNG/></w:webSettings>
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: puredocx
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - JetRuby
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-04-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fastimage
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubyzip
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.13'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.13'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.5'
69
+ description: It allows you to create docx document and to put formatted text, insert
70
+ images and tables to it
71
+ email: engineering@jetruby.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - lib/puredocx.rb
77
+ - lib/puredocx/constructors/image_size.rb
78
+ - lib/puredocx/constructors/rels.rb
79
+ - lib/puredocx/constructors/table_column.rb
80
+ - lib/puredocx/doc_archive.rb
81
+ - lib/puredocx/document.rb
82
+ - lib/puredocx/exceptions.rb
83
+ - lib/puredocx/xml_generators/base.rb
84
+ - lib/puredocx/xml_generators/cell.rb
85
+ - lib/puredocx/xml_generators/image.rb
86
+ - lib/puredocx/xml_generators/row.rb
87
+ - lib/puredocx/xml_generators/table.rb
88
+ - lib/puredocx/xml_generators/text.rb
89
+ - lib/template/[Content_Types].xml
90
+ - lib/template/brake.xml
91
+ - lib/template/docProps/app.xml
92
+ - lib/template/docProps/core.xml
93
+ - lib/template/float_image.xml
94
+ - lib/template/image.xml
95
+ - lib/template/new_page.xml
96
+ - lib/template/paragraph.xml
97
+ - lib/template/table/cells.xml
98
+ - lib/template/table/rows.xml
99
+ - lib/template/table/table.xml
100
+ - lib/template/word/document.xml
101
+ - lib/template/word/endnotes.xml
102
+ - lib/template/word/fontTable.xml
103
+ - lib/template/word/footer1.xml
104
+ - lib/template/word/footnotes.xml
105
+ - lib/template/word/header1.xml
106
+ - lib/template/word/settings.xml
107
+ - lib/template/word/styles.xml
108
+ - lib/template/word/theme/theme1.xml
109
+ - lib/template/word/webSettings.xml
110
+ homepage: http://jetruby.com/
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ - template
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 2.3.1
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ requirements: []
130
+ rubyforge_project:
131
+ rubygems_version: 2.5.1
132
+ signing_key:
133
+ specification_version: 4
134
+ summary: A simple gem for creating docx documents
135
+ test_files: []