markdown-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +3 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +19 -0
  8. data/Rakefile +10 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +7 -0
  11. data/exe/markdown-ui +37 -0
  12. data/lib/markdown-ui.rb +130 -0
  13. data/lib/markdown-ui/button/animated.rb +22 -0
  14. data/lib/markdown-ui/button/basic.rb +17 -0
  15. data/lib/markdown-ui/button/custom.rb +20 -0
  16. data/lib/markdown-ui/button/element.rb +59 -0
  17. data/lib/markdown-ui/button/focusable.rb +23 -0
  18. data/lib/markdown-ui/button/group/buttons/custom.rb +21 -0
  19. data/lib/markdown-ui/button/group/buttons/element.rb +28 -0
  20. data/lib/markdown-ui/button/group/buttons/icon.rb +19 -0
  21. data/lib/markdown-ui/button/group/buttons/standard.rb +19 -0
  22. data/lib/markdown-ui/button/icon.rb +17 -0
  23. data/lib/markdown-ui/button/labeled_icon.rb +23 -0
  24. data/lib/markdown-ui/button/standard.rb +17 -0
  25. data/lib/markdown-ui/container/alignment/center.rb +19 -0
  26. data/lib/markdown-ui/container/alignment/left.rb +19 -0
  27. data/lib/markdown-ui/container/alignment/right.rb +19 -0
  28. data/lib/markdown-ui/container/custom.rb +17 -0
  29. data/lib/markdown-ui/container/element.rb +38 -0
  30. data/lib/markdown-ui/container/standard.rb +17 -0
  31. data/lib/markdown-ui/container/text.rb +17 -0
  32. data/lib/markdown-ui/content/custom.rb +16 -0
  33. data/lib/markdown-ui/content/header.rb +19 -0
  34. data/lib/markdown-ui/content/icon.rb +24 -0
  35. data/lib/markdown-ui/content/item.rb +21 -0
  36. data/lib/markdown-ui/content/list.rb +23 -0
  37. data/lib/markdown-ui/content/parser.rb +66 -0
  38. data/lib/markdown-ui/content/text.rb +24 -0
  39. data/lib/markdown-ui/divider/element.rb +0 -0
  40. data/lib/markdown-ui/divider/hidden.rb +0 -0
  41. data/lib/markdown-ui/divider/standard.rb +0 -0
  42. data/lib/markdown-ui/grid/column/column.rb +18 -0
  43. data/lib/markdown-ui/grid/grid.rb +18 -0
  44. data/lib/markdown-ui/grid/row/row.rb +18 -0
  45. data/lib/markdown-ui/header/header.rb +30 -0
  46. data/lib/markdown-ui/label/custom.rb +20 -0
  47. data/lib/markdown-ui/label/element.rb +34 -0
  48. data/lib/markdown-ui/menu/custom.rb +20 -0
  49. data/lib/markdown-ui/menu/element.rb +62 -0
  50. data/lib/markdown-ui/menu/pagination.rb +17 -0
  51. data/lib/markdown-ui/menu/pointing.rb +17 -0
  52. data/lib/markdown-ui/menu/secondary.rb +17 -0
  53. data/lib/markdown-ui/menu/standard.rb +17 -0
  54. data/lib/markdown-ui/menu/tabular.rb +17 -0
  55. data/lib/markdown-ui/menu/text.rb +17 -0
  56. data/lib/markdown-ui/menu/vertical.rb +17 -0
  57. data/lib/markdown-ui/message/custom_message.rb +20 -0
  58. data/lib/markdown-ui/message/list_message.rb +17 -0
  59. data/lib/markdown-ui/message/message.rb +40 -0
  60. data/lib/markdown-ui/message/standard_message.rb +17 -0
  61. data/lib/markdown-ui/segment/custom_segment.rb +18 -0
  62. data/lib/markdown-ui/segment/horizontal_segment.rb +16 -0
  63. data/lib/markdown-ui/segment/padded_segment.rb +16 -0
  64. data/lib/markdown-ui/segment/piled_segment.rb +16 -0
  65. data/lib/markdown-ui/segment/segment.rb +34 -0
  66. data/lib/markdown-ui/segment/stacked_segment.rb +16 -0
  67. data/lib/markdown-ui/segment/standard_segment.rb +16 -0
  68. data/lib/markdown-ui/segment/vertical_segment.rb +16 -0
  69. data/lib/markdown-ui/tag/custom_tag.rb +25 -0
  70. data/lib/markdown-ui/tag/item_tag.rb +24 -0
  71. data/lib/markdown-ui/tag/list_tag.rb +40 -0
  72. data/lib/markdown-ui/tag/span_tag.rb +14 -0
  73. data/lib/markdown-ui/tag/standard_tag.rb +23 -0
  74. data/lib/markdown-ui/tag/tag.rb +37 -0
  75. data/lib/markdown-ui/utils/klass_util.rb +11 -0
  76. data/lib/markdown-ui/version.rb +3 -0
  77. data/markdown-ui.gemspec +36 -0
  78. data/website/index.html +369 -0
  79. data/website/index.md +389 -0
  80. metadata +208 -0
@@ -0,0 +1,24 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI
4
+ module Content
5
+ class Text
6
+ def initialize(content, klass = nil)
7
+ @content = content
8
+ @klass = klass
9
+ end
10
+
11
+ def render
12
+ content = if @klass
13
+ klass = "#{@klass}"
14
+
15
+ MarkdownUI::StandardTag.new(@content, klass).render
16
+ else
17
+ "#{@content.strip}"
18
+ end
19
+
20
+ content
21
+ end
22
+ end
23
+ end
24
+ end
File without changes
File without changes
File without changes
@@ -0,0 +1,18 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI
4
+ class Column
5
+ def initialize(element, content)
6
+ @element = element
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ element = @element.strip
12
+ content = @content.strip
13
+ klass = "ui #{element} column"
14
+
15
+ MarkdownUI::StandardTag.new(content, klass).render
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI
4
+ class Grid
5
+ def initialize(element, content)
6
+ @element = element
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ element = @element.strip
12
+ content = @content.strip
13
+ klass = "ui #{element} grid"
14
+
15
+ MarkdownUI::StandardTag.new(content, klass).render
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI
4
+ class Row
5
+ def initialize(element, content)
6
+ @element = element
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ element = @element.strip
12
+ content = @content.strip
13
+ klass = "ui #{element} row"
14
+
15
+ MarkdownUI::StandardTag.new(content, klass).render
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,30 @@
1
+ module MarkdownUI
2
+ class Header
3
+ def initialize(text, level)
4
+ @text, @klass = text.split(":")
5
+ @level = level
6
+ end
7
+
8
+ def render
9
+ text = @text.strip
10
+ klass = MarkdownUI::KlassUtil.new("ui #{@klass} header").klass
11
+ level = @level
12
+
13
+ output = []
14
+
15
+ if @level > 0
16
+ output << "<h#{@level}"
17
+ output << klass + ">"
18
+ output << "#{@text}"
19
+ output << "</h#{level}>"
20
+ else
21
+ output << "<div"
22
+ output << klass + ">"
23
+ output << "#{@text}"
24
+ output << "</div>"
25
+ end
26
+
27
+ output.join
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,20 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Label
4
+ class Custom
5
+ def initialize(element, content, klass = nil)
6
+ @element = element
7
+ @klass = klass
8
+ @content = content
9
+ end
10
+
11
+ def render
12
+ element = @element.join(" ").strip
13
+ content = MarkdownUI::Content::Parser.new(@content).parse
14
+ klass = "ui #{element} #{@klass} label"
15
+
16
+ MarkdownUI::StandardTag.new(content, klass).render
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,34 @@
1
+ module MarkdownUI::Label
2
+ class Element
3
+ def initialize(element, content, klass = nil)
4
+ @element = element
5
+ @content = content
6
+ @klass = klass
7
+ end
8
+
9
+ def render
10
+ element = if @element.is_a? Array
11
+ @element
12
+ else
13
+ @element.split(" ")
14
+ end
15
+
16
+ content = @content
17
+
18
+ klass = if @klass.nil?
19
+ element.join(" ").strip
20
+ else
21
+ @klass
22
+ end
23
+
24
+ MarkdownUI::Label::Custom.new(element, content, klass).render
25
+ end
26
+
27
+ protected
28
+
29
+ def standard_label?(mode)
30
+ !mode.image? && !mode.secondary? && !mode.pagination? && !mode.pointing? && !mode.tabular? && !mode.text? && !mode.vertical?
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,20 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Menu
4
+ class Custom
5
+ def initialize(element, content, klass = nil)
6
+ @element = element
7
+ @klass = klass
8
+ @content = content
9
+ end
10
+
11
+ def render
12
+ element = @element.join(" ").strip
13
+ content = MarkdownUI::Content::Parser.new(@content).parse
14
+ klass = "ui #{element} #{@klass} menu"
15
+
16
+ MarkdownUI::StandardTag.new(content, klass).render
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,62 @@
1
+ module MarkdownUI::Menu
2
+ class Element
3
+ def initialize(element, content, klass = nil)
4
+ @element = element
5
+ @content = content
6
+ @klass = klass
7
+ end
8
+
9
+ def render
10
+ element = if @element.is_a? Array
11
+ @element
12
+ else
13
+ @element.split(" ")
14
+ end
15
+
16
+ content = @content
17
+
18
+ klass = if @klass.nil?
19
+ element.join(" ").strip
20
+ else
21
+ @klass
22
+ end
23
+
24
+ mode = OpenStruct.new(
25
+ :item? => element.grep(/item/i).any?,
26
+ :secondary? => element.grep(/secondary/i).any?,
27
+ :pagination? => element.grep(/pagination/i).any?,
28
+ :pointing? => element.grep(/pointing/i).any?,
29
+ :tabular? => element.grep(/tabular/i).any?,
30
+ :text? => element.grep(/text/i).any?,
31
+ :vertical? => element.grep(/vertical/i).any?
32
+ )
33
+
34
+ if standard_menu?(mode) && element.size > 1
35
+ MarkdownUI::Menu::Custom.new(element, content, klass).render
36
+ elsif mode.item?
37
+ MarkdownUI::Menu::Custom.new(element, content, klass).render
38
+ elsif mode.secondary?
39
+ MarkdownUI::Menu::Secondary.new(content, klass).render
40
+ elsif mode.pagination?
41
+ MarkdownUI::Menu::Pagination.new(content, klass).render
42
+ elsif mode.pointing?
43
+ MarkdownUI::Menu::Pointing.new(content, klass).render
44
+ elsif mode.tabular?
45
+ MarkdownUI::Menu::Tabular.new(content, klass).render
46
+ elsif mode.text?
47
+ MarkdownUI::Menu::Text.new(content, klass).render
48
+ elsif mode.vertical?
49
+ MarkdownUI::Menu::Vertical.new(content, klass).render
50
+ elsif standard_menu?(mode)
51
+ MarkdownUI::Menu::Standard.new(content, klass).render
52
+ end
53
+ end
54
+
55
+ protected
56
+
57
+ def standard_menu?(mode)
58
+ !mode.item? && !mode.secondary? && !mode.pagination? && !mode.pointing? && !mode.tabular? && !mode.text? && !mode.vertical?
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Menu
4
+ class Pagination
5
+ def initialize(content, klass = nil)
6
+ @klass = klass
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ klass = "ui #{@klass} pagination menu"
12
+ content = MarkdownUI::Content::Parser.new(@content).parse
13
+
14
+ MarkdownUI::StandardTag.new(content, klass).render
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Menu
4
+ class Pointing
5
+ def initialize(content, klass = nil)
6
+ @klass = klass
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ klass = "ui #{@klass} pointing menu"
12
+ content = MarkdownUI::Content::Parser.new(@content).parse
13
+
14
+ MarkdownUI::StandardTag.new(content, klass).render
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Menu
4
+ class Secondary
5
+ def initialize(content, klass = nil)
6
+ @klass = klass
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ klass = "ui #{@klass} secondary menu"
12
+ content = MarkdownUI::Content::Parser.new(@content).parse
13
+
14
+ MarkdownUI::StandardTag.new(content, klass).render
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Menu
4
+ class Standard
5
+ def initialize(content, klass = nil)
6
+ @klass = klass
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ klass = "ui #{@klass} menu"
12
+ content = MarkdownUI::Content::Parser.new(@content).parse
13
+
14
+ MarkdownUI::StandardTag.new(content, klass).render
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Menu
4
+ class Tabular
5
+ def initialize(content, klass = nil)
6
+ @klass = klass
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ klass = "ui #{@klass} tabular menu"
12
+ content = MarkdownUI::Content::Parser.new(@content).parse
13
+
14
+ MarkdownUI::StandardTag.new(content, klass).render
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Menu
4
+ class Text
5
+ def initialize(content, klass = nil)
6
+ @klass = klass
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ klass = "ui #{@klass} text menu"
12
+ content = MarkdownUI::Content::Parser.new(@content).parse
13
+
14
+ MarkdownUI::StandardTag.new(content, klass).render
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI::Menu
4
+ class Vertical
5
+ def initialize(content, klass = nil)
6
+ @klass = klass
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ klass = "ui #{@klass} vertical menu"
12
+ content = MarkdownUI::Content::Parser.new(@content).parse
13
+
14
+ MarkdownUI::StandardTag.new(content, klass).render
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,20 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI
4
+ class CustomMessage
5
+ def initialize(element, content, klass = nil)
6
+ @element = element
7
+ @klass = klass
8
+ @content = content
9
+ end
10
+
11
+ def render
12
+ element = @element.join(" ").strip
13
+ content = MarkdownUI::Content::Parser.new(@content).parse
14
+ klass = "ui #{element} #{@klass} message"
15
+
16
+ MarkdownUI::StandardTag.new(content, klass).render
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,17 @@
1
+ # coding: UTF-8
2
+
3
+ module MarkdownUI
4
+ class ListMessage
5
+ def initialize(content, klass = nil)
6
+ @klass = klass
7
+ @content = content
8
+ end
9
+
10
+ def render
11
+ klass = "ui #{@klass} message"
12
+ content = MarkdownUI::Content::Parser.new(@content).parse
13
+
14
+ MarkdownUI::StandardTag.new(content, klass).render
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,40 @@
1
+ module MarkdownUI
2
+ class Message
3
+ def initialize(element, content, klass = nil)
4
+ @element = element
5
+ @content = content
6
+ @klass = klass
7
+ end
8
+
9
+ def render
10
+ element = if @element.is_a? Array
11
+ @element
12
+ else
13
+ @element.split(" ")
14
+ end
15
+
16
+ content = @content
17
+ klass = @klass
18
+
19
+ mode = OpenStruct.new(
20
+ :list? => element.grep(/list/i).any?,
21
+ :icon? => element.grep(/icon/i).any?,
22
+ :dismissable? => element.grep(/dismissable/i).any?
23
+ )
24
+
25
+ if standard_message?(mode) && element.size > 1
26
+ MarkdownUI::CustomMessage.new(element, content, klass).render
27
+ elsif mode.list?
28
+ MarkdownUI::ListMessage.new(content, klass).render
29
+ else standard_message?(mode)
30
+ MarkdownUI::StandardMessage.new(content, klass).render
31
+ end
32
+ end
33
+
34
+ protected
35
+
36
+ def standard_message?(mode)
37
+ !mode.list? && !mode.icon? && !mode.dismissable?
38
+ end
39
+ end
40
+ end