docks_app 0.0.1
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.
- data/.editorconfig +8 -0
- data/.gitignore +22 -0
- data/.rubocop.yml +20 -0
- data/.travis.yml +10 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +35 -0
- data/Rakefile +3 -0
- data/bin/docks +5 -0
- data/config/json/docks_config.json +71 -0
- data/config/ruby/docks_config.rb +127 -0
- data/config/yaml/docks_config.yml +70 -0
- data/docks.gemspec +38 -0
- data/lib/docks/build.rb +300 -0
- data/lib/docks/cache.rb +143 -0
- data/lib/docks/command_line.rb +65 -0
- data/lib/docks/configuration.rb +217 -0
- data/lib/docks/containers/base_container.rb +103 -0
- data/lib/docks/containers/class_container.rb +39 -0
- data/lib/docks/containers/component_container.rb +92 -0
- data/lib/docks/containers/demo_container.rb +105 -0
- data/lib/docks/containers/factory_container.rb +12 -0
- data/lib/docks/containers/function_container.rb +46 -0
- data/lib/docks/containers/mixin_container.rb +19 -0
- data/lib/docks/containers/pattern_container.rb +168 -0
- data/lib/docks/containers/pattern_library_container.rb +77 -0
- data/lib/docks/containers/state_container.rb +9 -0
- data/lib/docks/containers/symbol_container.rb +77 -0
- data/lib/docks/containers/variable_container.rb +47 -0
- data/lib/docks/containers/variant_container.rb +9 -0
- data/lib/docks/containers/variation_container.rb +38 -0
- data/lib/docks/containers.rb +25 -0
- data/lib/docks/descriptor.rb +60 -0
- data/lib/docks/errors.rb +5 -0
- data/lib/docks/group.rb +66 -0
- data/lib/docks/helpers/github_helper.rb +29 -0
- data/lib/docks/helpers/path_helper.rb +94 -0
- data/lib/docks/helpers/render_helper.rb +87 -0
- data/lib/docks/helpers.rb +19 -0
- data/lib/docks/languages/base_language.rb +17 -0
- data/lib/docks/languages/coffeescript_language.rb +30 -0
- data/lib/docks/languages/common_types/markup_language.rb +71 -0
- data/lib/docks/languages/css_language.rb +13 -0
- data/lib/docks/languages/erb_language.rb +21 -0
- data/lib/docks/languages/haml_language.rb +21 -0
- data/lib/docks/languages/html_language.rb +10 -0
- data/lib/docks/languages/javascript_language.rb +42 -0
- data/lib/docks/languages/json_language.rb +18 -0
- data/lib/docks/languages/less_language.rb +33 -0
- data/lib/docks/languages/markdown_language.rb +10 -0
- data/lib/docks/languages/sass_language.rb +36 -0
- data/lib/docks/languages/slim_language.rb +21 -0
- data/lib/docks/languages/stylus_language.rb +26 -0
- data/lib/docks/languages/yaml_language.rb +18 -0
- data/lib/docks/languages.rb +103 -0
- data/lib/docks/markdown.rb +18 -0
- data/lib/docks/messenger.rb +69 -0
- data/lib/docks/naming_conventions/base_naming_convention.rb +9 -0
- data/lib/docks/naming_conventions/bem_naming_convention.rb +45 -0
- data/lib/docks/naming_conventions/suit_naming_convention.rb +45 -0
- data/lib/docks/naming_conventions.rb +21 -0
- data/lib/docks/ostruct.rb +17 -0
- data/lib/docks/parser.rb +86 -0
- data/lib/docks/parsers/base_parser.rb +128 -0
- data/lib/docks/parsers/coffeescript_parser.rb +30 -0
- data/lib/docks/parsers/css_parser.rb +27 -0
- data/lib/docks/parsers/javascript_parser.rb +30 -0
- data/lib/docks/parsers/less_parser.rb +22 -0
- data/lib/docks/parsers/sass_parser.rb +31 -0
- data/lib/docks/parsers/stylus_parser.rb +28 -0
- data/lib/docks/process.rb +60 -0
- data/lib/docks/processors.rb +416 -0
- data/lib/docks/renderers/base_renderer.rb +64 -0
- data/lib/docks/renderers/common_features/capturable.rb +69 -0
- data/lib/docks/renderers/common_features/helperable.rb +23 -0
- data/lib/docks/renderers/erb_renderer.rb +68 -0
- data/lib/docks/renderers/haml_renderer.rb +37 -0
- data/lib/docks/renderers/slim_renderer.rb +33 -0
- data/lib/docks/symbol_sources/base_symbol_source.rb +12 -0
- data/lib/docks/symbol_sources/jquery_symbol_source.rb +17 -0
- data/lib/docks/symbol_sources/mdn_symbol_source.rb +35 -0
- data/lib/docks/symbol_sources/sass_symbol_source.rb +27 -0
- data/lib/docks/symbol_sources.rb +28 -0
- data/lib/docks/tags/access_tag.rb +27 -0
- data/lib/docks/tags/activate_with_tag.rb +17 -0
- data/lib/docks/tags/active_tag.rb +14 -0
- data/lib/docks/tags/alias_tag.rb +17 -0
- data/lib/docks/tags/author_tag.rb +19 -0
- data/lib/docks/tags/base_tag.rb +52 -0
- data/lib/docks/tags/beta_tag.rb +26 -0
- data/lib/docks/tags/class_tag.rb +16 -0
- data/lib/docks/tags/compatibility_tag.rb +19 -0
- data/lib/docks/tags/demo_type_tag.rb +14 -0
- data/lib/docks/tags/deprecated_tag.rb +26 -0
- data/lib/docks/tags/description_tag.rb +99 -0
- data/lib/docks/tags/example_tag.rb +20 -0
- data/lib/docks/tags/factory_tag.rb +16 -0
- data/lib/docks/tags/for_tag.rb +23 -0
- data/lib/docks/tags/group_tag.rb +10 -0
- data/lib/docks/tags/helper_tag.rb +13 -0
- data/lib/docks/tags/include_with_tag.rb +57 -0
- data/lib/docks/tags/javascript_action_tag.rb +10 -0
- data/lib/docks/tags/link_tag.rb +18 -0
- data/lib/docks/tags/markup_tag.rb +106 -0
- data/lib/docks/tags/member_tag.rb +37 -0
- data/lib/docks/tags/method_tag.rb +18 -0
- data/lib/docks/tags/name_tag.rb +10 -0
- data/lib/docks/tags/object_tag.rb +15 -0
- data/lib/docks/tags/param_tag.rb +94 -0
- data/lib/docks/tags/pattern_tag.rb +21 -0
- data/lib/docks/tags/preclude_tag.rb +17 -0
- data/lib/docks/tags/private_tag.rb +15 -0
- data/lib/docks/tags/property_tag.rb +18 -0
- data/lib/docks/tags/public_tag.rb +15 -0
- data/lib/docks/tags/require_tag.rb +47 -0
- data/lib/docks/tags/returns_tag.rb +31 -0
- data/lib/docks/tags/set_by_tag.rb +18 -0
- data/lib/docks/tags/signature_tag.rb +35 -0
- data/lib/docks/tags/since_tag.rb +26 -0
- data/lib/docks/tags/source_tag.rb +12 -0
- data/lib/docks/tags/state_tag.rb +21 -0
- data/lib/docks/tags/static_tag.rb +14 -0
- data/lib/docks/tags/subcomponent_tag.rb +68 -0
- data/lib/docks/tags/subtitle_tag.rb +11 -0
- data/lib/docks/tags/symbol_type_tag.rb +10 -0
- data/lib/docks/tags/throws_tag.rb +30 -0
- data/lib/docks/tags/title_tag.rb +10 -0
- data/lib/docks/tags/type_tag.rb +10 -0
- data/lib/docks/tags/value_tag.rb +10 -0
- data/lib/docks/tags/variant_tag.rb +21 -0
- data/lib/docks/tags/variation_tag.rb +136 -0
- data/lib/docks/tags.rb +103 -0
- data/lib/docks/templates.rb +122 -0
- data/lib/docks/themes.rb +19 -0
- data/lib/docks/types.rb +26 -0
- data/lib/docks/version.rb +3 -0
- data/lib/docks.rb +37 -0
- data/spec/fixtures/build/scripts/bar/bar_2.js +1 -0
- data/spec/fixtures/build/scripts/bar.js +1 -0
- data/spec/fixtures/build/styles/foo/foo-2.css +1 -0
- data/spec/fixtures/build/styles/foo.css +1 -0
- data/spec/fixtures/build/templates/baz/baz_2.erb +1 -0
- data/spec/fixtures/build/templates/baz.erb +1 -0
- data/spec/fixtures/grouper/components/button/button.coffee +0 -0
- data/spec/fixtures/grouper/components/button/button.haml +0 -0
- data/spec/fixtures/grouper/components/button/button.scss +0 -0
- data/spec/fixtures/grouper/components/checkbox/_checkbox.haml +0 -0
- data/spec/fixtures/grouper/components/checkbox/_checkbox.scss +0 -0
- data/spec/fixtures/grouper/components/checkbox/checkbox.coffee +0 -0
- data/spec/fixtures/grouper/components/form/form.coffee +0 -0
- data/spec/fixtures/grouper/components/form/form.m +0 -0
- data/spec/fixtures/grouper/components/form/form.scss +0 -0
- data/spec/fixtures/grouper/components/next-expanding-textarea/_next-expanding-textarea.scss +0 -0
- data/spec/fixtures/grouper/components/next-expanding-textarea/_next_expanding_textarea.coffee +0 -0
- data/spec/fixtures/grouper/components/next-expanding-textarea/next-expanding-textarea.haml +0 -0
- data/spec/fixtures/grouper/components/next-tab/next-tab.coffee +0 -0
- data/spec/fixtures/grouper/components/next-tab/next-tab.haml +0 -0
- data/spec/fixtures/grouper/components/next-tab/next-tab.scss +0 -0
- data/spec/fixtures/grouper/components/segmented control/segmented control.coffee +0 -0
- data/spec/fixtures/grouper/components/segmented control/segmented control.haml +0 -0
- data/spec/fixtures/grouper/components/segmented control/segmented control.min.html +0 -0
- data/spec/fixtures/grouper/components/segmented control/segmented control.scss +0 -0
- data/spec/fixtures/grouper/markup/list-view.haml +0 -0
- data/spec/fixtures/grouper/markup/resizable/resizable.haml +0 -0
- data/spec/fixtures/grouper/markup/toggle.haml +0 -0
- data/spec/fixtures/grouper/scripts/resizable/resizable.coffee +0 -0
- data/spec/fixtures/grouper/scripts/toggle.coffee +0 -0
- data/spec/fixtures/grouper/style/_list-view.scss +0 -0
- data/spec/fixtures/grouper/style/_toggle.scss +0 -0
- data/spec/fixtures/languages/stub.json +3 -0
- data/spec/fixtures/languages/stub.yml +2 -0
- data/spec/fixtures/parsers/coffeescript_parser_fixture_basic.coffee +20 -0
- data/spec/fixtures/parsers/coffeescript_parser_fixture_complex.coffee +80 -0
- data/spec/fixtures/parsers/css_parser_fixture_basic.css +44 -0
- data/spec/fixtures/parsers/css_parser_fixture_complex.css +120 -0
- data/spec/fixtures/parsers/javascript_parser_fixture_basic.js +27 -0
- data/spec/fixtures/parsers/javascript_parser_fixture_complex.js +85 -0
- data/spec/fixtures/parsers/sass_parser_fixture_basic.scss +39 -0
- data/spec/fixtures/parsers/sass_parser_fixture_complex.scss +149 -0
- data/spec/fixtures/parsers/stylus_parser_fixture_basic.styl +34 -0
- data/spec/fixtures/parsers/stylus_parser_fixture_complex.styl +113 -0
- data/spec/fixtures/processors/join_with_smart_line_breaks/code_blocks.txt +10 -0
- data/spec/fixtures/processors/join_with_smart_line_breaks/headings.txt +15 -0
- data/spec/fixtures/processors/join_with_smart_line_breaks/lists.txt +21 -0
- data/spec/fixtures/processors/join_with_smart_line_breaks/lists_with_nesting.txt +13 -0
- data/spec/fixtures/processors/join_with_smart_line_breaks/multiple_paragraphs.txt +11 -0
- data/spec/fixtures/renderers/helpers.rb +37 -0
- data/spec/fixtures/renderers/html_output.html +7 -0
- data/spec/fixtures/renderers/templates/layouts/application.html.erb +0 -0
- data/spec/fixtures/renderers/templates/layouts/more/subdirectory.html.erb +0 -0
- data/spec/fixtures/renderers/templates/partials/_leading_underscore.html.erb +1 -0
- data/spec/fixtures/renderers/templates/partials/more/_subdirectory.html.erb +1 -0
- data/spec/fixtures/renderers/templates/partials/partial.html.erb +0 -0
- data/spec/fixtures/renderers/templates/partials/template.html.erb +1 -0
- data/spec/fixtures/renderers/templates/template.html.erb +1 -0
- data/spec/fixtures/tags/description/button.md +24 -0
- data/spec/fixtures/tags/description/class.md +27 -0
- data/spec/fixtures/tags/description/component.md +23 -0
- data/spec/fixtures/tags/description/function.md +30 -0
- data/spec/lib/build_spec.rb +467 -0
- data/spec/lib/cache_spec.rb +175 -0
- data/spec/lib/command_line_spec.rb +77 -0
- data/spec/lib/configuration_spec.rb +180 -0
- data/spec/lib/containers/base_container_spec.rb +214 -0
- data/spec/lib/containers/class_container_spec.rb +209 -0
- data/spec/lib/containers/component_container_spec.rb +158 -0
- data/spec/lib/containers/demo_container_spec.rb +113 -0
- data/spec/lib/containers/function_container_spec.rb +116 -0
- data/spec/lib/containers/mixin_container_spec.rb +4 -0
- data/spec/lib/containers/pattern_container_spec.rb +291 -0
- data/spec/lib/containers/pattern_library_container_spec.rb +130 -0
- data/spec/lib/containers/symbol_container_spec.rb +216 -0
- data/spec/lib/containers/variable_container_spec.rb +116 -0
- data/spec/lib/containers/variation_container_spec.rb +52 -0
- data/spec/lib/containers_spec.rb +22 -0
- data/spec/lib/descriptor_spec.rb +73 -0
- data/spec/lib/group_spec.rb +151 -0
- data/spec/lib/helpers/path_helper_spec.rb +202 -0
- data/spec/lib/helpers/render_helper_spec.rb +159 -0
- data/spec/lib/helpers_spec.rb +35 -0
- data/spec/lib/languages/base_language_spec.rb +32 -0
- data/spec/lib/languages/coffeescript_language_spec.rb +52 -0
- data/spec/lib/languages/css_language_spec.rb +13 -0
- data/spec/lib/languages/erb_language_spec.rb +33 -0
- data/spec/lib/languages/haml_language_spec.rb +32 -0
- data/spec/lib/languages/javascript_language_spec.rb +54 -0
- data/spec/lib/languages/json_language_spec.rb +24 -0
- data/spec/lib/languages/less_language_spec.rb +39 -0
- data/spec/lib/languages/markup_language_spec.rb +95 -0
- data/spec/lib/languages/sass_language_spec.rb +53 -0
- data/spec/lib/languages/slim_language_spec.rb +32 -0
- data/spec/lib/languages/stylus_language_spec.rb +34 -0
- data/spec/lib/languages/yaml_language_spec.rb +24 -0
- data/spec/lib/languages_spec.rb +127 -0
- data/spec/lib/markdown_spec.rb +63 -0
- data/spec/lib/messenger_spec.rb +1 -0
- data/spec/lib/naming_conventions/bem_naming_convention_spec.rb +112 -0
- data/spec/lib/naming_conventions/suit_naming_convention_spec.rb +107 -0
- data/spec/lib/naming_conventions_spec.rb +28 -0
- data/spec/lib/ostruct_spec.rb +15 -0
- data/spec/lib/parser_spec.rb +93 -0
- data/spec/lib/parsers/base_parser_spec.rb +128 -0
- data/spec/lib/parsers/coffeescript_parser_spec.rb +184 -0
- data/spec/lib/parsers/css_parser_spec.rb +136 -0
- data/spec/lib/parsers/javascript_parser_spec.rb +216 -0
- data/spec/lib/parsers/less_parser_spec.rb +111 -0
- data/spec/lib/parsers/sass_parser_spec.rb +233 -0
- data/spec/lib/parsers/stylus_parser_spec.rb +212 -0
- data/spec/lib/process_spec.rb +96 -0
- data/spec/lib/processors_spec.rb +555 -0
- data/spec/lib/renderers/base_renderer_spec.rb +122 -0
- data/spec/lib/renderers/common_features/helperable_spec.rb +30 -0
- data/spec/lib/renderers/erb_renderer_spec.rb +119 -0
- data/spec/lib/renderers/haml_renderer_spec.rb +103 -0
- data/spec/lib/renderers/slim_renderer_spec.rb +103 -0
- data/spec/lib/symbol_sources/jquery_symbol_source_spec.rb +25 -0
- data/spec/lib/symbol_sources/mdn_symbol_source_spec.rb +40 -0
- data/spec/lib/symbol_sources/sass_symbol_source_spec.rb +39 -0
- data/spec/lib/symbol_sources_spec.rb +19 -0
- data/spec/lib/tags/access_tag_spec.rb +32 -0
- data/spec/lib/tags/activate_with_tag_spec.rb +31 -0
- data/spec/lib/tags/active_tag_spec.rb +24 -0
- data/spec/lib/tags/alias_tag_spec.rb +31 -0
- data/spec/lib/tags/author_tag_spec.rb +172 -0
- data/spec/lib/tags/base_tag_spec.rb +21 -0
- data/spec/lib/tags/beta_tag_spec.rb +52 -0
- data/spec/lib/tags/class_tag_spec.rb +29 -0
- data/spec/lib/tags/compatibility_tag_spec.rb +159 -0
- data/spec/lib/tags/demo_type_tag_spec.rb +24 -0
- data/spec/lib/tags/deprecated_tag_spec.rb +50 -0
- data/spec/lib/tags/description_tag_spec.rb +242 -0
- data/spec/lib/tags/example_tag_spec.rb +37 -0
- data/spec/lib/tags/factory_tag_spec.rb +29 -0
- data/spec/lib/tags/for_tag_spec.rb +45 -0
- data/spec/lib/tags/group_tag_spec.rb +20 -0
- data/spec/lib/tags/helper_tag_spec.rb +22 -0
- data/spec/lib/tags/include_with_tag_spec.rb +74 -0
- data/spec/lib/tags/javascript_action_tag_spec.rb +20 -0
- data/spec/lib/tags/link_tag_spec.rb +49 -0
- data/spec/lib/tags/markup_tag_spec.rb +255 -0
- data/spec/lib/tags/member_tag_spec.rb +167 -0
- data/spec/lib/tags/method_tag_spec.rb +27 -0
- data/spec/lib/tags/name_tag_spec.rb +20 -0
- data/spec/lib/tags/object_tag_spec.rb +24 -0
- data/spec/lib/tags/param_tag_spec.rb +261 -0
- data/spec/lib/tags/pattern_tag_spec.rb +49 -0
- data/spec/lib/tags/preclude_tag_spec.rb +31 -0
- data/spec/lib/tags/private_tag_spec.rb +31 -0
- data/spec/lib/tags/property_tag_spec.rb +27 -0
- data/spec/lib/tags/public_tag_spec.rb +29 -0
- data/spec/lib/tags/require_tag_spec.rb +133 -0
- data/spec/lib/tags/returns_tag_spec.rb +85 -0
- data/spec/lib/tags/set_by_tag_spec.rb +92 -0
- data/spec/lib/tags/signature_tag_spec.rb +125 -0
- data/spec/lib/tags/since_tag_spec.rb +48 -0
- data/spec/lib/tags/state_tag_spec.rb +199 -0
- data/spec/lib/tags/static_tag_spec.rb +27 -0
- data/spec/lib/tags/subcomponent_tag_spec.rb +78 -0
- data/spec/lib/tags/subtitle_tag_spec.rb +13 -0
- data/spec/lib/tags/symbol_type_tag_spec.rb +20 -0
- data/spec/lib/tags/throws_tag_spec.rb +49 -0
- data/spec/lib/tags/title_tag_spec.rb +20 -0
- data/spec/lib/tags/type_tag_spec.rb +20 -0
- data/spec/lib/tags/value_tag_spec.rb +20 -0
- data/spec/lib/tags/variant_tag_spec.rb +13 -0
- data/spec/lib/tags/variation_tag_spec.rb +154 -0
- data/spec/lib/tags_spec.rb +264 -0
- data/spec/lib/templates_spec.rb +185 -0
- data/spec/lib/themes_spec.rb +32 -0
- data/spec/spec_helper.rb +34 -0
- data/tasks/rspec.rake +7 -0
- data/tasks/rubocop.rake +8 -0
- metadata +740 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Docks::Tags::Author do
|
|
4
|
+
subject { Docks::Tags::Author.instance }
|
|
5
|
+
|
|
6
|
+
it "does not allow multiline content" do
|
|
7
|
+
expect(subject.multiline?).to be false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "allows multiple tags per block" do
|
|
11
|
+
expect(subject.multiple_allowed?).to be true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#process" do
|
|
15
|
+
let(:symbol) { Docks::Containers::Symbol.new }
|
|
16
|
+
let(:simple_content) { "Chris Sauve" }
|
|
17
|
+
let(:email) { "chrismsauve@gmail.com" }
|
|
18
|
+
let(:github) { "lemonmade" }
|
|
19
|
+
let(:complex_content) { "#{simple_content} (#{email}, github: #{github})" }
|
|
20
|
+
|
|
21
|
+
it "creates an array of authors even when only one is provided" do
|
|
22
|
+
expect(process_author_with(simple_content)).to be_an(Array)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "creates a :name when there are no other details" do
|
|
26
|
+
result = process_author_with(simple_content).first
|
|
27
|
+
expect(result.name).to eq simple_content
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "creates a :name when there are other details" do
|
|
31
|
+
result = process_author_with(complex_content).first
|
|
32
|
+
expect(result.name).to eq simple_content
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "does not create an :email when no parentheses are provided" do
|
|
36
|
+
result = process_author_with(simple_content).first
|
|
37
|
+
expect(result.email).to be nil
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "creates details when one is provided without a key" do
|
|
41
|
+
result = process_author_with(complex_content).first
|
|
42
|
+
expect(result.email).to eq email
|
|
43
|
+
expect(result.github).to eq github
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "creates details when keys are provided for all values" do
|
|
47
|
+
complex_content.sub!("(", "(email: ")
|
|
48
|
+
result = process_author_with(complex_content).first
|
|
49
|
+
expect(result.email).to eq email
|
|
50
|
+
expect(result.github).to eq github
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "creates an author for each name separated by commas" do
|
|
54
|
+
input = "#{simple_content}, #{simple_content} ,#{simple_content}"
|
|
55
|
+
result = process_author_with(input)
|
|
56
|
+
expect(result.length).to be 3
|
|
57
|
+
|
|
58
|
+
result.each do |author|
|
|
59
|
+
expect(author.name).to eq simple_content
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "creates an author for each name separated by pipes" do
|
|
64
|
+
input = "#{simple_content}| #{simple_content} |#{simple_content}"
|
|
65
|
+
result = process_author_with(input)
|
|
66
|
+
expect(result.length).to be 3
|
|
67
|
+
|
|
68
|
+
result.each do |author|
|
|
69
|
+
expect(author.name).to eq simple_content
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "creates an author for a complex author after a simple author name, separated by commas" do
|
|
74
|
+
input = "#{simple_content}, #{complex_content}"
|
|
75
|
+
result = process_author_with(input)
|
|
76
|
+
expect(result.length).to be 2
|
|
77
|
+
|
|
78
|
+
expect(result.first.name).to eq simple_content
|
|
79
|
+
expect(result[1].name).to eq simple_content
|
|
80
|
+
expect(result[1].email).to eq email
|
|
81
|
+
expect(result[1].github).to eq github
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "creates an author for a complex author after a simple author name, separated by pipes" do
|
|
85
|
+
input = "#{simple_content} |#{complex_content}"
|
|
86
|
+
result = process_author_with(input)
|
|
87
|
+
expect(result.length).to be 2
|
|
88
|
+
|
|
89
|
+
expect(result.first.name).to eq simple_content
|
|
90
|
+
expect(result[1].name).to eq simple_content
|
|
91
|
+
expect(result[1].email).to eq email
|
|
92
|
+
expect(result[1].github).to eq github
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "creates an author for a simple author after a complex author name, separated by spaces" do
|
|
96
|
+
input = "#{complex_content} #{simple_content}"
|
|
97
|
+
result = process_author_with(input)
|
|
98
|
+
expect(result.length).to be 2
|
|
99
|
+
|
|
100
|
+
expect(result.first.name).to eq simple_content
|
|
101
|
+
expect(result.first.email).to eq email
|
|
102
|
+
expect(result.first.github).to eq github
|
|
103
|
+
expect(result[1].name).to eq simple_content
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "creates an author for a simple author after a complex author name, separated by commas" do
|
|
107
|
+
input = "#{complex_content}, #{simple_content}"
|
|
108
|
+
result = process_author_with(input)
|
|
109
|
+
expect(result.length).to be 2
|
|
110
|
+
|
|
111
|
+
expect(result.first.name).to eq simple_content
|
|
112
|
+
expect(result.first.email).to eq email
|
|
113
|
+
expect(result.first.github).to eq github
|
|
114
|
+
expect(result[1].name).to eq simple_content
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it "creates an author for a simple author after a complex author name, separated by pipes" do
|
|
118
|
+
input = "#{complex_content} || #{simple_content}"
|
|
119
|
+
result = process_author_with(input)
|
|
120
|
+
expect(result.length).to be 2
|
|
121
|
+
|
|
122
|
+
expect(result.first.name).to eq simple_content
|
|
123
|
+
expect(result.first.email).to eq email
|
|
124
|
+
expect(result.first.github).to eq github
|
|
125
|
+
expect(result[1].name).to eq simple_content
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "creates an author with details for each author/ parentheses pair separated by spaces" do
|
|
129
|
+
input = "#{complex_content} #{complex_content}"
|
|
130
|
+
result = process_author_with(input)
|
|
131
|
+
expect(result.length).to be 2
|
|
132
|
+
|
|
133
|
+
result.each do |author|
|
|
134
|
+
expect(author.name).to eq simple_content
|
|
135
|
+
expect(author.email).to eq email
|
|
136
|
+
expect(author.github).to eq github
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "creates an author with details for each author/ parentheses pair separated by pipes" do
|
|
141
|
+
input = "#{complex_content} |#{complex_content}"
|
|
142
|
+
result = process_author_with(input)
|
|
143
|
+
expect(result.length).to be 2
|
|
144
|
+
|
|
145
|
+
result.each do |author|
|
|
146
|
+
expect(author.name).to eq simple_content
|
|
147
|
+
expect(author.email).to eq email
|
|
148
|
+
expect(author.github).to eq github
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "creates an author with details for each author/ parentheses pair separated by commas" do
|
|
153
|
+
input = "#{complex_content}, #{complex_content}"
|
|
154
|
+
result = process_author_with(input)
|
|
155
|
+
expect(result.length).to be 2
|
|
156
|
+
|
|
157
|
+
result.each do |author|
|
|
158
|
+
expect(author.name).to eq simple_content
|
|
159
|
+
expect(author.email).to eq email
|
|
160
|
+
expect(author.github).to eq github
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
private
|
|
165
|
+
|
|
166
|
+
def process_author_with(content)
|
|
167
|
+
symbol[subject.name] = content
|
|
168
|
+
subject.process(symbol)
|
|
169
|
+
symbol[subject.name]
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Docks::Tags::Base do
|
|
4
|
+
subject { Docks::Tags::Base.instance }
|
|
5
|
+
|
|
6
|
+
it "has no synonyms by default" do
|
|
7
|
+
expect(subject.synonyms).to eq []
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "is multiline by default" do
|
|
11
|
+
expect(subject.multiline?).to be true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "allows only one tag per block by default" do
|
|
15
|
+
expect(subject.multiple_allowed?).to be false
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "can be included in parse results" do
|
|
19
|
+
expect(subject.parseable?).to be true
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Docks::Tags::Beta do
|
|
4
|
+
subject { Docks::Tags::Beta.instance }
|
|
5
|
+
|
|
6
|
+
it "allows multiline content" do
|
|
7
|
+
expect(subject.multiline?).to be true
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "allows only one tag per block" do
|
|
11
|
+
expect(subject.multiple_allowed?).to be false
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#process" do
|
|
15
|
+
let(:symbol) { Docks::Containers::Symbol.new }
|
|
16
|
+
let(:simple_version) { "v2.0" }
|
|
17
|
+
let(:complex_version) { "Version 2.0.32-b2034" }
|
|
18
|
+
let(:description) { "This is the description" }
|
|
19
|
+
|
|
20
|
+
it "returns just the version when no description is provided" do
|
|
21
|
+
expect(process_beta_with([simple_version]).version).to eq simple_version
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "gets a simple version when a description is provided" do
|
|
25
|
+
expect(process_beta_with(["#{simple_version} - #{description}"]).version).to eq simple_version
|
|
26
|
+
expect(process_beta_with(["#{simple_version} - #{description}"]).version).to eq simple_version
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "gets a complex version when a description is provided" do
|
|
30
|
+
expect(process_beta_with(["#{complex_version} - #{description}"]).version).to eq complex_version
|
|
31
|
+
expect(process_beta_with(["#{complex_version} - #{description}"]).version).to eq complex_version
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "returns a nil description when no description is provided" do
|
|
35
|
+
expect(process_beta_with([complex_version]).description).to be nil
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "assigns a description when one is provided" do
|
|
39
|
+
target_description = Docks::Processors.join_with_smart_line_breaks(description)
|
|
40
|
+
expect(process_beta_with(["#{complex_version} - #{description}"]).description).to eq target_description
|
|
41
|
+
expect(process_beta_with(["#{complex_version} - #{description}"]).description).to eq target_description
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
def process_beta_with(content)
|
|
47
|
+
symbol[subject.name] = content
|
|
48
|
+
subject.process(symbol)
|
|
49
|
+
symbol[subject.name]
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Docks::Tags::Klass do
|
|
4
|
+
subject { Docks::Tags::Klass.instance }
|
|
5
|
+
|
|
6
|
+
it "does not allow multiline content" do
|
|
7
|
+
expect(subject.multiline?).to be false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "only allows one tag per block" do
|
|
11
|
+
expect(subject.multiple_allowed?).to be false
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#process" do
|
|
15
|
+
it "marks the attribute as true" do
|
|
16
|
+
symbol = Docks::Containers::Symbol.new(name: "foo", class: "")
|
|
17
|
+
Docks::Process.process(symbol)
|
|
18
|
+
expect(symbol[subject.name]).to be true
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "converts the symbol to be a class container" do
|
|
22
|
+
symbol = Docks::Containers::Function.new(class: "", name: "foo")
|
|
23
|
+
symbol = Docks::Process.process(symbol)
|
|
24
|
+
|
|
25
|
+
expect(symbol).to be_a Docks::Containers::Klass
|
|
26
|
+
expect(symbol.symbol_type).to eq Docks::Types::Symbol::CLASS
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Docks::Tags::Compatibility do
|
|
4
|
+
subject { Docks::Tags::Compatibility.instance }
|
|
5
|
+
|
|
6
|
+
it "does not allow multiline content" do
|
|
7
|
+
expect(subject.multiline?).to be false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "allows multiple tags per block" do
|
|
11
|
+
expect(subject.multiple_allowed?).to be true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#process" do
|
|
15
|
+
let(:symbol) { Docks::Containers::Symbol.new }
|
|
16
|
+
let(:simple_content) { "Chrome" }
|
|
17
|
+
let(:version) { "latest" }
|
|
18
|
+
let(:complex_content) { "#{simple_content} (#{version})" }
|
|
19
|
+
|
|
20
|
+
it "creates an array of compatibilities even when only one is provided" do
|
|
21
|
+
expect(process_compatibility_with(simple_content)).to be_an(Array)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "correctly creates a :browser when there are no other details" do
|
|
25
|
+
result = process_compatibility_with(simple_content).first
|
|
26
|
+
expect(result.browser).to eq simple_content
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "correctly creates a :browser when there are other details" do
|
|
30
|
+
result = process_compatibility_with(complex_content).first
|
|
31
|
+
expect(result.browser).to eq simple_content
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "does not create a :version when no parentheses are provided" do
|
|
35
|
+
result = process_compatibility_with(simple_content).first
|
|
36
|
+
expect(result.version).to be nil
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "correctly creates a :version when it is provided without a key" do
|
|
40
|
+
result = process_compatibility_with(complex_content).first
|
|
41
|
+
expect(result.version).to eq version
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "correctly creates a :version when provided with a key" do
|
|
45
|
+
complex_content.sub!("(", "(version: ")
|
|
46
|
+
result = process_compatibility_with(complex_content).first
|
|
47
|
+
expect(result.version).to eq version
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "creates an entry for each browser separated by commas" do
|
|
51
|
+
input = "#{simple_content}, #{simple_content} ,#{simple_content}"
|
|
52
|
+
result = process_compatibility_with(input)
|
|
53
|
+
expect(result.length).to be 3
|
|
54
|
+
|
|
55
|
+
result.each do |compatibility|
|
|
56
|
+
expect(compatibility.browser).to eq simple_content
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "creates an entry for each browser separated by pipes" do
|
|
61
|
+
input = "#{simple_content}| #{simple_content} |#{simple_content}"
|
|
62
|
+
result = process_compatibility_with(input)
|
|
63
|
+
expect(result.length).to be 3
|
|
64
|
+
|
|
65
|
+
result.each do |compatibility|
|
|
66
|
+
expect(compatibility.browser).to eq simple_content
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "creates an entry for a complex compatibility detail after a simple browser name, separated by commas" do
|
|
71
|
+
input = "#{simple_content}, #{complex_content}"
|
|
72
|
+
result = process_compatibility_with(input)
|
|
73
|
+
expect(result.length).to be 2
|
|
74
|
+
|
|
75
|
+
expect(result.first.browser).to eq simple_content
|
|
76
|
+
expect(result[1].browser).to eq simple_content
|
|
77
|
+
expect(result[1].version).to eq version
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "creates an entry for a complex compatibility detail after a simple browser name, separated by pipes" do
|
|
81
|
+
input = "#{simple_content} |#{complex_content}"
|
|
82
|
+
result = process_compatibility_with(input)
|
|
83
|
+
expect(result.length).to be 2
|
|
84
|
+
|
|
85
|
+
expect(result.first.browser).to eq simple_content
|
|
86
|
+
expect(result[1].browser).to eq simple_content
|
|
87
|
+
expect(result[1].version).to eq version
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "creates an entry for a browser name after a complex compatibility detail, separated by spaces" do
|
|
91
|
+
input = "#{complex_content} #{simple_content}"
|
|
92
|
+
result = process_compatibility_with(input)
|
|
93
|
+
expect(result.length).to be 2
|
|
94
|
+
|
|
95
|
+
expect(result.first.browser).to eq simple_content
|
|
96
|
+
expect(result.first.version).to eq version
|
|
97
|
+
expect(result[1].browser).to eq simple_content
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "creates an entry for a browser name after a complex compatibility detail, separated by commas" do
|
|
101
|
+
input = "#{complex_content}, #{simple_content}"
|
|
102
|
+
result = process_compatibility_with(input)
|
|
103
|
+
expect(result.length).to be 2
|
|
104
|
+
|
|
105
|
+
expect(result.first.browser).to eq simple_content
|
|
106
|
+
expect(result.first.version).to eq version
|
|
107
|
+
expect(result[1].browser).to eq simple_content
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "creates an entry for a browser name after a complex compatibility detail, separated by pipes" do
|
|
111
|
+
input = "#{complex_content} || #{simple_content}"
|
|
112
|
+
result = process_compatibility_with(input)
|
|
113
|
+
expect(result.length).to be 2
|
|
114
|
+
|
|
115
|
+
expect(result.first.browser).to eq simple_content
|
|
116
|
+
expect(result.first.version).to eq version
|
|
117
|
+
expect(result[1].browser).to eq simple_content
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "creates an entry with details for each browser/ parentheses pair separated by spaces" do
|
|
121
|
+
input = "#{complex_content} #{complex_content}"
|
|
122
|
+
result = process_compatibility_with(input)
|
|
123
|
+
expect(result.length).to be 2
|
|
124
|
+
|
|
125
|
+
result.each do |compatibility|
|
|
126
|
+
expect(compatibility.browser).to eq simple_content
|
|
127
|
+
expect(compatibility.version).to eq version
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "creates an entry with details for each browser/ parentheses pair separated by pipes" do
|
|
132
|
+
input = "#{complex_content} |#{complex_content}"
|
|
133
|
+
result = process_compatibility_with(input)
|
|
134
|
+
expect(result.length).to be 2
|
|
135
|
+
|
|
136
|
+
result.each do |compatibility|
|
|
137
|
+
expect(compatibility.browser).to eq simple_content
|
|
138
|
+
expect(compatibility.version).to eq version
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "creates an entry with details for each browser/ parentheses pair separated by commas" do
|
|
143
|
+
input = "#{complex_content}, #{complex_content}"
|
|
144
|
+
result = process_compatibility_with(input)
|
|
145
|
+
expect(result.length).to be 2
|
|
146
|
+
|
|
147
|
+
result.each do |compatibility|
|
|
148
|
+
expect(compatibility.browser).to eq simple_content
|
|
149
|
+
expect(compatibility.version).to eq version
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def process_compatibility_with(content)
|
|
154
|
+
symbol[subject.name] = content
|
|
155
|
+
subject.process(symbol)
|
|
156
|
+
symbol[subject.name]
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Docks::Tags::DemoType do
|
|
4
|
+
subject { Docks::Tags::DemoType.instance }
|
|
5
|
+
|
|
6
|
+
it "does not allow multiline content" do
|
|
7
|
+
expect(subject.multiline?).to be false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "only allows one tag per block" do
|
|
11
|
+
expect(subject.multiple_allowed?).to be false
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#process" do
|
|
15
|
+
it "makes sure the value is a valid demo type" do
|
|
16
|
+
symbol = Docks::Containers::Symbol.new
|
|
17
|
+
symbol[subject.name] = Docks::Types::Demo::JOINT
|
|
18
|
+
|
|
19
|
+
expect(subject).to receive(:ensure_valid_demo_type).and_call_original
|
|
20
|
+
subject.process(symbol)
|
|
21
|
+
expect(symbol[subject.name]).to be Docks::Types::Demo::JOINT
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Docks::Tags::Deprecated do
|
|
4
|
+
subject { Docks::Tags::Deprecated.instance }
|
|
5
|
+
|
|
6
|
+
it "allows multiline content" do
|
|
7
|
+
expect(subject.multiline?).to be true
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "allows only one tag per block" do
|
|
11
|
+
expect(subject.multiple_allowed?).to be false
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#process" do
|
|
15
|
+
let(:symbol) { Docks::Containers::Symbol.new }
|
|
16
|
+
let(:simple_version) { "v2.0" }
|
|
17
|
+
let(:complex_version) { "Version 2.0.32-b2034" }
|
|
18
|
+
let(:description) { "This is the description" }
|
|
19
|
+
|
|
20
|
+
it "returns just the version when no description is provided" do
|
|
21
|
+
expect(process_deprecation_with([simple_version]).version).to eq simple_version
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "gets a simple version when a description is provided" do
|
|
25
|
+
expect(process_deprecation_with(["#{simple_version} - #{description}"]).version).to eq simple_version
|
|
26
|
+
expect(process_deprecation_with(["#{simple_version} - #{description}"]).version).to eq simple_version
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "gets a complex version when a description is provided" do
|
|
30
|
+
expect(process_deprecation_with(["#{complex_version} - #{description}"]).version).to eq complex_version
|
|
31
|
+
expect(process_deprecation_with(["#{complex_version} - #{description}"]).version).to eq complex_version
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "returns a nil description when no description is provided" do
|
|
35
|
+
expect(process_deprecation_with([complex_version]).description).to be nil
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "assigns a description when one is provided" do
|
|
39
|
+
target_description = Docks::Processors.join_with_smart_line_breaks(description)
|
|
40
|
+
expect(process_deprecation_with(["#{complex_version} - #{description}"]).description).to eq target_description
|
|
41
|
+
expect(process_deprecation_with(["#{complex_version} - #{description}"]).description).to eq target_description
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def process_deprecation_with(content)
|
|
45
|
+
symbol[subject.name] = content
|
|
46
|
+
subject.process(symbol)
|
|
47
|
+
symbol[subject.name]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|