reverse_adoc 1.0.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -3
  3. data/README.adoc +4 -294
  4. data/Rakefile +2 -13
  5. data/reverse_adoc.gemspec +2 -20
  6. metadata +5 -246
  7. data/.editorconfig +0 -15
  8. data/.github/workflows/rake.yml +0 -15
  9. data/.gitignore +0 -10
  10. data/.hound.yml +0 -5
  11. data/.rubocop.yml +0 -10
  12. data/LICENSE.txt +0 -25
  13. data/exe/reverse_adoc +0 -70
  14. data/exe/w2a +0 -72
  15. data/lib/reverse_adoc/cleaner.rb +0 -113
  16. data/lib/reverse_adoc/config.rb +0 -54
  17. data/lib/reverse_adoc/converters/a.rb +0 -42
  18. data/lib/reverse_adoc/converters/aside.rb +0 -16
  19. data/lib/reverse_adoc/converters/audio.rb +0 -29
  20. data/lib/reverse_adoc/converters/base.rb +0 -100
  21. data/lib/reverse_adoc/converters/blockquote.rb +0 -27
  22. data/lib/reverse_adoc/converters/br.rb +0 -15
  23. data/lib/reverse_adoc/converters/bypass.rb +0 -81
  24. data/lib/reverse_adoc/converters/code.rb +0 -56
  25. data/lib/reverse_adoc/converters/div.rb +0 -18
  26. data/lib/reverse_adoc/converters/drop.rb +0 -22
  27. data/lib/reverse_adoc/converters/em.rb +0 -55
  28. data/lib/reverse_adoc/converters/figure.rb +0 -25
  29. data/lib/reverse_adoc/converters/h.rb +0 -42
  30. data/lib/reverse_adoc/converters/head.rb +0 -23
  31. data/lib/reverse_adoc/converters/hr.rb +0 -15
  32. data/lib/reverse_adoc/converters/ignore.rb +0 -16
  33. data/lib/reverse_adoc/converters/img.rb +0 -93
  34. data/lib/reverse_adoc/converters/li.rb +0 -17
  35. data/lib/reverse_adoc/converters/mark.rb +0 -21
  36. data/lib/reverse_adoc/converters/math.rb +0 -31
  37. data/lib/reverse_adoc/converters/ol.rb +0 -64
  38. data/lib/reverse_adoc/converters/p.rb +0 -23
  39. data/lib/reverse_adoc/converters/pass_through.rb +0 -13
  40. data/lib/reverse_adoc/converters/pre.rb +0 -55
  41. data/lib/reverse_adoc/converters/q.rb +0 -16
  42. data/lib/reverse_adoc/converters/strong.rb +0 -52
  43. data/lib/reverse_adoc/converters/sub.rb +0 -16
  44. data/lib/reverse_adoc/converters/sup.rb +0 -16
  45. data/lib/reverse_adoc/converters/table.rb +0 -69
  46. data/lib/reverse_adoc/converters/td.rb +0 -83
  47. data/lib/reverse_adoc/converters/text.rb +0 -65
  48. data/lib/reverse_adoc/converters/th.rb +0 -14
  49. data/lib/reverse_adoc/converters/tr.rb +0 -22
  50. data/lib/reverse_adoc/converters/video.rb +0 -29
  51. data/lib/reverse_adoc/converters.rb +0 -32
  52. data/lib/reverse_adoc/errors.rb +0 -10
  53. data/lib/reverse_adoc/html_converter.rb +0 -61
  54. data/lib/reverse_adoc/version.rb +0 -3
  55. data/lib/reverse_adoc.rb +0 -27
  56. data/spec/assets/anchors.html +0 -30
  57. data/spec/assets/basic.html +0 -61
  58. data/spec/assets/code.html +0 -22
  59. data/spec/assets/escapables.html +0 -17
  60. data/spec/assets/external_images.docx +0 -0
  61. data/spec/assets/external_images.html +0 -35
  62. data/spec/assets/from_the_wild.html +0 -23
  63. data/spec/assets/full_example.html +0 -49
  64. data/spec/assets/html_fragment.html +0 -3
  65. data/spec/assets/lists.html +0 -137
  66. data/spec/assets/minimum.html +0 -4
  67. data/spec/assets/paragraphs.html +0 -24
  68. data/spec/assets/quotation.html +0 -12
  69. data/spec/assets/tables.html +0 -99
  70. data/spec/assets/unknown_tags.html +0 -9
  71. data/spec/bin/reverse_adoc_spec.rb +0 -33
  72. data/spec/bin/w2a_spec.rb +0 -35
  73. data/spec/components/anchors_spec.rb +0 -32
  74. data/spec/components/basic_spec.rb +0 -63
  75. data/spec/components/code_spec.rb +0 -25
  76. data/spec/components/escapables_spec.rb +0 -30
  77. data/spec/components/from_the_wild_spec.rb +0 -15
  78. data/spec/components/html_fragment_spec.rb +0 -9
  79. data/spec/components/lists_spec.rb +0 -90
  80. data/spec/components/paragraphs_spec.rb +0 -14
  81. data/spec/components/quotation_spec.rb +0 -12
  82. data/spec/components/tables_spec.rb +0 -42
  83. data/spec/components/unknown_tags_spec.rb +0 -41
  84. data/spec/lib/reverse_adoc/cleaner_spec.rb +0 -180
  85. data/spec/lib/reverse_adoc/config_spec.rb +0 -25
  86. data/spec/lib/reverse_adoc/converters/aside_spec.rb +0 -11
  87. data/spec/lib/reverse_adoc/converters/audio_spec.rb +0 -15
  88. data/spec/lib/reverse_adoc/converters/blockquote_spec.rb +0 -23
  89. data/spec/lib/reverse_adoc/converters/br_spec.rb +0 -9
  90. data/spec/lib/reverse_adoc/converters/code_spec.rb +0 -15
  91. data/spec/lib/reverse_adoc/converters/div_spec.rb +0 -15
  92. data/spec/lib/reverse_adoc/converters/figure_spec.rb +0 -10
  93. data/spec/lib/reverse_adoc/converters/img_spec.rb +0 -25
  94. data/spec/lib/reverse_adoc/converters/li_spec.rb +0 -11
  95. data/spec/lib/reverse_adoc/converters/mark_spec.rb +0 -10
  96. data/spec/lib/reverse_adoc/converters/p_spec.rb +0 -10
  97. data/spec/lib/reverse_adoc/converters/pre_spec.rb +0 -43
  98. data/spec/lib/reverse_adoc/converters/q_spec.rb +0 -10
  99. data/spec/lib/reverse_adoc/converters/strong_spec.rb +0 -21
  100. data/spec/lib/reverse_adoc/converters/text_spec.rb +0 -67
  101. data/spec/lib/reverse_adoc/converters/video_spec.rb +0 -15
  102. data/spec/lib/reverse_adoc/converters_spec.rb +0 -22
  103. data/spec/lib/reverse_adoc.rb +0 -90
  104. data/spec/spec_helper.rb +0 -25
  105. data/spec/support/shell_helpers.rb +0 -15
@@ -1,16 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Sup < Base
4
- def to_coradoc(node, state = {})
5
- content = treat_children(node, state)
6
- Coradoc::Element::Inline::Superscript.new(content)
7
- end
8
-
9
- def convert(node, state = {})
10
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
11
- end
12
- end
13
-
14
- register :sup, Sup.new
15
- end
16
- end
@@ -1,69 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Table < Base
4
- def to_coradoc(node, state = {})
5
- id = node["id"]
6
- title = extract_title(node)
7
- attrs = style(node)
8
- content = treat_children_coradoc(node, state)
9
- Coradoc::Element::Table.new(title, content, { id: id, attrs: attrs })
10
- end
11
-
12
- def convert(node, state = {})
13
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
14
- end
15
-
16
- def extract_title(node)
17
- title = node.at("./caption")
18
- return "" if title.nil?
19
-
20
- treat_children(title, {})
21
- end
22
-
23
- def frame(node)
24
- case node["frame"]
25
- when "void"
26
- "none"
27
- when "hsides"
28
- "topbot"
29
- when "vsides"
30
- "sides"
31
- when "box", "border"
32
- "all"
33
- end
34
- end
35
-
36
- def rules(node)
37
- case node["rules"]
38
- when "all"
39
- "all"
40
- when "rows"
41
- "rows"
42
- when "cols"
43
- "cols"
44
- when "none"
45
- "none"
46
- end
47
- end
48
-
49
- def style(node)
50
- attrs = Coradoc::Element::AttributeList.new
51
- # Width is disabled on tables for now. (From #88)
52
- # attrs.add_named("width", node["width"]) if node["width"]
53
-
54
- frame_attr = frame(node)
55
- attrs.add_named("frame", frame_attr) if frame_attr
56
-
57
- rules_attr = rules(node)
58
- attrs.add_named("rules", rules_attr) if rules_attr
59
-
60
- # This line should be removed.
61
- return "" if attrs.empty?
62
-
63
- attrs
64
- end
65
- end
66
-
67
- register :table, Table.new
68
- end
69
- end
@@ -1,83 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Td < Base
4
- def to_coradoc(node, state = {})
5
- # convert(node, state)
6
- id = node["id"]
7
- colrowattr = colrow(node["colspan"], node["rowspan"])
8
- alignattr = alignstyle(node)
9
- style = cellstyle(node)
10
-
11
- singlepara = node.elements.size == 1 && node.elements.first.name == "p"
12
- state[:tdsinglepara] = singlepara if singlepara
13
-
14
- adoccell = node.at(".//ul | .//ol | .//pre | .//blockquote | .//br | .//hr") ||
15
- node.at(".//p") && !singlepara
16
-
17
- style = "a" if adoccell
18
- delim = adoccell ? "\n" : " "
19
- content = treat_children_coradoc(node, state)
20
- options = {}.tap do |hash|
21
- hash[:id] = id
22
- hash[:colrowattr] = colrowattr
23
- hash[:alignattr] = alignattr
24
- hash[:style] = style
25
- hash[:content] = content
26
- hash[:delim] = delim
27
- end
28
-
29
- Coradoc::Element::Table::Cell.new(options)
30
- end
31
-
32
- def convert(node, state = {})
33
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
34
- end
35
-
36
- def cellstyle(_node)
37
- ""
38
- end
39
-
40
- def colrow(colspan, rowspan)
41
- if colspan && rowspan && colspan != "1" && rowspan != "1"
42
- "#{colspan}.#{rowspan}+"
43
- elsif colspan && colspan != "1"
44
- "#{colspan}+"
45
- elsif rowspan && rowspan != "1"
46
- ".#{rowspan}+"
47
- else
48
- ""
49
- end
50
- end
51
-
52
- def alignstyle(node)
53
- align = node["align"]
54
- valign = node["valign"]
55
- a = case align
56
- when "left" then "<"
57
- when "center" then "^"
58
- when "right" then ">"
59
- else
60
- ""
61
- end
62
- v = case valign
63
- when "top" then "<"
64
- when "middle" then "^"
65
- when "bottom" then ">"
66
- else
67
- ""
68
- end
69
- if align && valign
70
- "#{a}.#{v}"
71
- elsif align
72
- a
73
- elsif valign
74
- ".#{v}"
75
- else
76
- ""
77
- end
78
- end
79
- end
80
-
81
- register :td, Td.new
82
- end
83
- end
@@ -1,65 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Text < Base
4
- def to_coradoc(node, state = {})
5
- return treat_empty(node, state) if node.text.strip.empty?
6
-
7
- Coradoc::Element::TextElement.new(treat_text(node))
8
- end
9
-
10
- def convert(node, state = {})
11
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
12
- end
13
-
14
- private
15
-
16
- def treat_empty(node, state)
17
- parent = node.parent.name.to_sym
18
- if %i[ol ul].include?(parent) # Otherwise the identation is broken
19
- ""
20
- elsif state[:tdsinglepara]
21
- ""
22
- elsif node.text == " " # Regular whitespace text node
23
- " "
24
- else
25
- ""
26
- end
27
- end
28
-
29
- def treat_text(node)
30
- text = node.text
31
- text = preserve_nbsp(text)
32
- text = remove_border_newlines(text)
33
- text = remove_inner_newlines(text)
34
- text = escape_keychars(text)
35
-
36
- text = preserve_keychars_within_backticks(text)
37
- escape_links(text)
38
- end
39
-
40
- def preserve_nbsp(text)
41
- text.gsub(/\u00A0/, "&nbsp;")
42
- end
43
-
44
- def escape_links(text)
45
- text.gsub(/<<([^>]*)>>/, "\\<<\\1>>")
46
- end
47
-
48
- def remove_border_newlines(text)
49
- text.gsub(/\A\n+/, "").gsub(/\n+\z/, "")
50
- end
51
-
52
- def remove_inner_newlines(text)
53
- text.tr("\n\t", " ").squeeze(" ")
54
- end
55
-
56
- def preserve_keychars_within_backticks(text)
57
- text.gsub(/`.*?`/) do |match|
58
- match.gsub('\_', "_").gsub('\*', "*")
59
- end
60
- end
61
- end
62
-
63
- register :text, Text.new
64
- end
65
- end
@@ -1,14 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Th < Td
4
- def cellstyle(node)
5
- # this is the header row
6
- return "" if node.parent.previous_element.nil?
7
-
8
- "h"
9
- end
10
- end
11
-
12
- register :th, Th.new
13
- end
14
- end
@@ -1,22 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Tr < Base
4
- def to_coradoc(node, state = {})
5
- content = treat_children_coradoc(node, state)
6
- header = table_header_row?(node)
7
- Coradoc::Element::Table::Row.new(content, header)
8
- end
9
-
10
- def convert(node, state = {})
11
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
12
- end
13
-
14
- def table_header_row?(node)
15
- # node.element_children.all? {|child| child.name.to_sym == :th}
16
- node.previous_element.nil?
17
- end
18
- end
19
-
20
- register :tr, Tr.new
21
- end
22
- end
@@ -1,29 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Video < Base
4
- def to_coradoc(node, _state = {})
5
- src = node["src"]
6
- id = node["id"]
7
- title = extract_title(node)
8
- attributes = Coradoc::Element::AttributeList.new
9
- options = options(node)
10
- attributes.add_named("options", options) if options.any?
11
- Coradoc::Element::Video.new(title, id: id, src: src,
12
- attributes: attributes)
13
- end
14
-
15
- def convert(node, state = {})
16
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
17
- end
18
-
19
- def options(node)
20
- autoplay = node["autoplay"]
21
- loop_attr = node["loop"]
22
- controls = node["controls"]
23
- [autoplay, loop_attr, controls].compact
24
- end
25
- end
26
-
27
- register :video, Video.new
28
- end
29
- end
@@ -1,32 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- def self.register(tag_name, converter)
4
- @@converters ||= {}
5
- @@converters[tag_name.to_sym] = converter
6
- end
7
-
8
- def self.unregister(tag_name)
9
- @@converters.delete(tag_name.to_sym)
10
- end
11
-
12
- def self.lookup(tag_name)
13
- @@converters[tag_name.to_sym] or default_converter(tag_name)
14
- end
15
-
16
- def self.default_converter(tag_name)
17
- case ReverseAdoc.config.unknown_tags.to_sym
18
- when :pass_through
19
- ReverseAdoc::Converters::PassThrough.new
20
- when :drop
21
- ReverseAdoc::Converters::Drop.new
22
- when :bypass
23
- ReverseAdoc::Converters::Bypass.new
24
- when :raise
25
- raise UnknownTagError, "unknown tag: #{tag_name}"
26
- else
27
- raise InvalidConfigurationError,
28
- "unknown value #{ReverseAdoc.config.unknown_tags.inspect} for ReverseAdoc.config.unknown_tags"
29
- end
30
- end
31
- end
32
- end
@@ -1,10 +0,0 @@
1
- module ReverseAdoc
2
- class Error < StandardError
3
- end
4
-
5
- class UnknownTagError < Error
6
- end
7
-
8
- class InvalidConfigurationError < Error
9
- end
10
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "converters/a"
4
- require_relative "converters/aside"
5
- require_relative "converters/audio"
6
- require_relative "converters/blockquote"
7
- require_relative "converters/br"
8
- require_relative "converters/bypass"
9
- require_relative "converters/code"
10
- require_relative "converters/div"
11
- require_relative "converters/drop"
12
- require_relative "converters/em"
13
- require_relative "converters/figure"
14
- require_relative "converters/h"
15
- require_relative "converters/head"
16
- require_relative "converters/hr"
17
- require_relative "converters/ignore"
18
- require_relative "converters/img"
19
- require_relative "converters/mark"
20
- require_relative "converters/li"
21
- require_relative "converters/ol"
22
- require_relative "converters/p"
23
- require_relative "converters/pass_through"
24
- require_relative "converters/pre"
25
- require_relative "converters/q"
26
- require_relative "converters/strong"
27
- require_relative "converters/sup"
28
- require_relative "converters/sub"
29
- require_relative "converters/table"
30
- require_relative "converters/td"
31
- require_relative "converters/th"
32
- require_relative "converters/text"
33
- require_relative "converters/tr"
34
- require_relative "converters/video"
35
- require_relative "converters/math"
36
-
37
- module ReverseAdoc
38
- class HtmlConverter
39
- def self.to_coradoc(input, options = {})
40
- root = case input
41
- when String
42
- Nokogiri::HTML(input).root
43
- when Nokogiri::XML::Document
44
- input.root
45
- when Nokogiri::XML::Node
46
- input
47
- end
48
-
49
- return "" unless root
50
-
51
- ReverseAdoc.config.with(options) do
52
- ReverseAdoc::Converters.lookup(root.name).to_coradoc(root)
53
- end
54
- end
55
-
56
- def self.convert(input, options = {})
57
- result = Coradoc::Generator.gen_adoc(to_coradoc(input, options))
58
- ReverseAdoc.cleaner.tidy(result)
59
- end
60
- end
61
- end
@@ -1,3 +0,0 @@
1
- module ReverseAdoc
2
- VERSION = "1.0.1".freeze
3
- end
data/lib/reverse_adoc.rb DELETED
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "digest"
4
- require "nokogiri"
5
- require_relative "reverse_adoc/version"
6
- require_relative "reverse_adoc/errors"
7
- require_relative "reverse_adoc/cleaner"
8
- require_relative "reverse_adoc/config"
9
- require_relative "reverse_adoc/converters"
10
- require_relative "reverse_adoc/converters/base"
11
- require_relative "reverse_adoc/html_converter"
12
-
13
- module ReverseAdoc
14
- def self.convert(input, options = {})
15
- ReverseAdoc::HtmlConverter.convert(input, options)
16
- end
17
-
18
- def self.config
19
- @config ||= Config.new
20
- yield @config if block_given?
21
- @config
22
- end
23
-
24
- def self.cleaner
25
- @cleaner ||= Cleaner.new
26
- end
27
- end
@@ -1,30 +0,0 @@
1
- <html>
2
- <body>
3
- some text...
4
- <a href="http://foobar.com">Foobar</a>
5
- <a href="http://foobar.com" title="f***** up beyond all recognition">Fubar</a>
6
- <a href="http://foobar.com" title="f***** up beyond all redemption"/>
7
- <a href="http://strong.foobar.com"><strong>Strong foobar</strong></a>
8
- There should be space before but not after the anchor (<a href="http://foobar.com">stripped</a>).
9
-
10
- do not ignore <a href="foo.html"> </a> anchor tags with no link text
11
- link <a href="#content">internal jumplinks</a> with anchors
12
- link <a href="#content2"/>internal jumplinks without anchors
13
- treat <a id="content">anchor tags with no href</a> as bookmarks
14
-
15
- some text...
16
-
17
- <a href="#a__b spaced">Double __ anchor with space</a>
18
-
19
- Double __ anchor with space <a id="a__b spaced"/>
20
-
21
- <a id="_Toc12345"/>
22
-
23
- <img src="http://foobar.com/logo.png">
24
- <img alt="foobar image" src="http://foobar.com/foobar.png">
25
- <img alt="foobar image 2" title="this is the foobar image 2" src="http://foobar.com/foobar2.png">
26
- some text...
27
-
28
- <h1><a id="a__Foreword"></a>Text</h1>
29
- </body>
30
- </html>
@@ -1,61 +0,0 @@
1
- <html>
2
- <body>
3
- plain text
4
- <h1>h1</h1>
5
- <h1 id="A">h1 with anchor</h1>
6
- <h2>h2</h2>
7
- <h3>h3</h3>
8
- <h4>h4</h4>
9
- <h5>h5</h5>
10
- <h6>h6</h6>
11
-
12
- <em>em tag content</em>
13
- before <em></em> and after empty em tags
14
- before <em> </em> and after em tags containing whitespace
15
- before <em> <em> <br /> </em> </em> and after em tags containing whitespace
16
- <em><em>double em tags</em></em>
17
- <p><em><em>double em tags in p tag</em></em></p>
18
- a<em> em with leading and trailing </em>whitespace
19
- a<em>
20
- em with extra leading and trailing
21
- </em>whitespace
22
-
23
- <strong>strong tag content</strong>
24
- before <strong></strong> and after empty strong tags
25
- before <strong> </strong> and after strong tags containing whitespace
26
- before <strong> <strong> <br /> </strong> </strong> and after strong tags containing whitespace
27
- <strong><strong>double strong tags</strong></strong>
28
- <p><strong><strong>double strong tags in p tag</strong></strong></p>
29
- before
30
- <strong>
31
- <strong>
32
- double strong tags containing whitespace
33
- </strong>
34
- </strong> after
35
- a<strong> strong with leading and trailing </strong>whitespace
36
- a<strong>
37
- strong with extra leading and trailing
38
- </strong>whitespace
39
-
40
- constrai<strong>ned</strong> strong
41
- constrai<i>ned</i> italic
42
-
43
- <b>b tag content</b>
44
- <i>i tag content</i>
45
-
46
- H<sub>2</sub>O
47
- A<sup>2</sup>B
48
-
49
- br tags become double space followed by newline<br/>
50
-
51
- before hr
52
- <hr/>
53
- after hr
54
-
55
- <div>section 1</div>
56
- <div>section 2</div>
57
-
58
- ignore <abbr>abbr</abbr>
59
-
60
- </body>
61
- </html>
@@ -1,22 +0,0 @@
1
- <html>
2
- <body>
3
- <pre>pre block</pre>
4
- <code>code block</code>
5
- <pre><code>pre code block</code></pre>
6
-
7
- <p>Paragraph with inline <code>code</code> block</p>
8
-
9
- <pre><code>var this;
10
- this.is("A multi line code block")
11
- console.log("Yup, it is")
12
- </code></pre>
13
-
14
- Code with indentation:
15
- <pre><code>tell application "Foo"
16
- beep
17
- end tell
18
- </code></pre>
19
-
20
- </body>
21
- </html>
22
-
@@ -1,17 +0,0 @@
1
- <html>
2
- <body>
3
- some text...
4
-
5
- **two asterisks**
6
- ***three asterisks***
7
- ***three *and*the* asterisc*word and asterisc**multword asterisks***
8
- __two underscores__
9
- ___three underscores___
10
- ___three__underscores___ and another_undersocre
11
-
12
- some text...
13
-
14
- <pre><code>var theoretical_max_infin = 1.0;</code></pre>
15
-
16
- </body>
17
- </html>
Binary file
@@ -1,35 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
2
- <?xml version="1.0" encoding="UTF-8"??><html xmlns="http://www.w3.org/1999/xhtml" style="margin: 0;">
3
- <!--This file was converted to xhtml by LibreOffice - see http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/xslt for the code.--><head profile="http://dublincore.org/documents/dcmi-terms/">
4
- <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8">
5
- <meta name="DCTERMS.title" content="" xml:lang="en-US">
6
- <meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646">
7
- <meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml">
8
- <meta name="DCTERMS.creator" content="Nick Nicholas">
9
- <meta name="DCTERMS.issued" content="2019-11-21T08:48:00" scheme="DCTERMS.W3CDTF">
10
- <meta name="DCTERMS.contributor" content="Nick Nicholas">
11
- <meta name="DCTERMS.modified" content="2019-11-21T10:01:00" scheme="DCTERMS.W3CDTF">
12
- <meta name="DCTERMS.provenance" content="" xml:lang="en-US">
13
- <meta name="DCTERMS.subject" content="," xml:lang="en-US">
14
- <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en">
15
- <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en">
16
- <link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en">
17
- <link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en">
18
- </head>
19
- <body dir="ltr" style="max-width: 21.001cm; margin: 2.54cm 3.175cm;">
20
- <h1 class="P3" style="clear: both; color: #2f5496; font-size: 16pt; font-family: Calibri Light; writing-mode: lr-tb; margin: 0.423cm 0 0cm;" align="left ! important">
21
- <a id="a__Hello" style="margin: 0;"><span style="margin: 0;"></span></a><span class="T1" style="margin: 0;">Hello</span>
22
- </h1>
23
- <p class="P1" style="font-size: 12pt; font-family: Calibri; writing-mode: lr-tb; margin: 0;" align="left ! important"> </p>
24
- <p class="Standard" style="font-size: 12pt; font-family: Calibri; writing-mode: lr-tb; margin: 0;" align="left ! important"><span class="T1" style="margin: 0;">H</span><h1 class="T3" style="vertical-align: super; font-size: 58%; margin: 0;">2</h1><span class="T1" style="margin: 0;">0</span></p>
25
- <p class="P1" style="font-size: 12pt; font-family: Calibri; writing-mode: lr-tb; margin: 0;" align="left ! important"> </p>
26
- <!--Next 'div' was a 'text:p'.--><div class="Standard" style="font-size: 12pt; font-family: Calibri; writing-mode: lr-tb; margin: 0;" align="left ! important">
27
- <!--Next ' span' is a draw:frame. --><span style="margin: 0;"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block" style="margin: 0;"><mrow style="margin: 0;"><mrow style="margin: 0;"><mrow style="margin: 0;"></mrow><mrow style="margin: 0;"><mi style="margin: 0;">i</mi><mo stretchy="false" style="margin: 0;">=</mo><mn style="margin: 0;">1</mn></mrow></mrow><mrow style="margin: 0;"><mrow style="margin: 0;"></mrow><mi style="margin: 0;">n</mi><msubsup style="margin: 0;"><mi style="margin: 0;">β</mi><mn style="margin: 0;">2</mn><mi style="margin: 0;">i</mi></msubsup></mrow></mrow></math></span>
28
- </div>
29
- <div style="clear: both; line-height: 0; width: 0; height: 0; margin: 0; padding: 0;"> </div>
30
- <!--Next 'div' was a 'text:p'.--><div class="Standard" style="font-size: 12pt; font-family: Calibri; writing-mode: lr-tb; margin: 0;" align="left ! important">
31
- <a id="_GoBack" style="margin: 0;"></a><!--Next ' span' is a draw:frame. --><span style="height: 1.764cm; margin: 0cm; padding: 0; border: none; width: 1.764cm; font-size: 12pt; font-family: Calibri; text-align: center; vertical-align: top; background-color: transparent;" class="fr1" id="Εικόνα_2"><img style="height: 1.764cm; width: 1.764cm; margin: 0;" alt="" src="data:image/gif;base64,R0lGODlhZABkAIAAAAAAAP///ywAAAAAZABkAEAC+4yPqcvtD6OctNqLs968XwCGokd24kidYckuKri9cFvKQCzTdG7x+u+y+YDECqqIzByTzKbzCY1Kp9Sq9eoQKrTY1Ev57TJsuLA4Meylz8HTxMz2LOPFOR1ov+v3/L7/DxgoOEj4IcRVeLA2Bue3CEHGF2nYyDaJcWn5+LZ5lamm0tf5MHpWilYJ6INymmiQ52q0EqsBSythews5qwt60wscLDxMXGx8jJysvMzc7PwM7XmYWzh9SPuJmuq43Raq2ooQbpUdMT5Vbn4ela7+fdfu/h4Xv9stfS/vBr+uPa+Zz94/gPvADCRY0FdCfgdxBezSr1+Vh+Iaclu4KoSiKGsSL9YTRu1YSGMji5UkdnJYSpC8nq0M9hJYzF4zo9m8iTOnzigFAAAh/tNUaGlzIGZpbGUgd2FzIGNyZWF0ZWQgYnkNDUdyYXBoaWMgV29ya3Nob3CZIFByb2Zlc3Npb25hbCAyLjBhDQ1mcm9tIEFsY2hlbXkgTWluZHdvcmtzIEluYy4NaHR0cDovL3d3dy5taW5kd29ya3Nob3AuY29tDQ1UaGlzIGltYWdlIG1heSBoYXZlIGJlZW4gY3JlYXRlZCBieQ1hIHBhcnR5IG90aGVyIHRoYW4gQWxjaGVteSBNaW5kd29ya3MgSW5jLg0NVXNlIG5vIGhvb2tzADs="></span>
32
- </div>
33
- <div style="clear: both; line-height: 0; width: 0; height: 0; margin: 0; padding: 0;"> </div>
34
- </body>
35
- </html>
@@ -1,23 +0,0 @@
1
- <p>
2
- <strong>
3
- <strong>
4
- .<br />
5
- </strong>
6
- *** intentcast
7
- </strong>
8
- : logo design
9
- <strong>
10
- <strong>
11
- <br />
12
- </strong>
13
- </strong>
14
- <strong>
15
- <strong>
16
- .
17
- </strong>
18
- </strong>
19
- </p>
20
-
21
- <a href="example.com/foo_bar">
22
- <img src="example.com/foo_bar.png"> I\_AM\_HELPFUL
23
- </a>