docks_app 0.0.2 → 0.0.3
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.
- checksums.yaml +8 -8
 - data/config/json/docks_config.json +0 -2
 - data/config/ruby/docks_config.rb +0 -2
 - data/config/yaml/docks_config.yml +0 -2
 - data/lib/docks/build.rb +7 -2
 - data/lib/docks/configuration.rb +19 -7
 - data/lib/docks/helpers.rb +1 -0
 - data/lib/docks/helpers/path_helper.rb +2 -2
 - data/lib/docks/helpers/render_helper.rb +5 -18
 - data/lib/docks/renderers/common_features/helperable.rb +1 -1
 - data/lib/docks/version.rb +1 -1
 - data/spec/lib/build_spec.rb +9 -2
 - data/spec/lib/configuration_spec.rb +1 -2
 - data/spec/lib/helpers/path_helper_spec.rb +5 -4
 - data/spec/lib/helpers/render_helper_spec.rb +6 -51
 - data/spec/lib/helpers_spec.rb +18 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,15 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            !binary "U0hBMQ==":
         
     | 
| 
       3 
3 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
      
 4 
     | 
    
         
            +
                MTZkNGY3ZjlkOTJlNTA4OGUwOWNhNzA0OWZmNjdjYjQ5ZDc5YjgzYg==
         
     | 
| 
       5 
5 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                OWRlMjYyMDllNzM3YTdlMjI2ZjhjMWIzOGE4ZDA4YjliMGZmYTJiOA==
         
     | 
| 
       7 
7 
     | 
    
         
             
            SHA512:
         
     | 
| 
       8 
8 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                MTk0NTk4YWQ1NDM2ODU2OTlkNmVlM2Q1MmM0MzExYTRkNDAxZTZlOTgwZDlh
         
     | 
| 
      
 10 
     | 
    
         
            +
                OWY0YjdjNzAwOWFjODgzMzM4MDJiYjc5MDJhYWMyOTAwMTZjZWUyYTcxZTdm
         
     | 
| 
      
 11 
     | 
    
         
            +
                MDBjNTQ4YmI1ZTAwM2IzZWY3YTZmOThlNjUwODA2YzhiYzVlMGQ=
         
     | 
| 
       12 
12 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                MGRlNjcwZjZlZWU3ZDFjNzIxNzNkYTVkYWUzOTk1MzU3YjlmNzQ3ZDk3MzVh
         
     | 
| 
      
 14 
     | 
    
         
            +
                NmI5NTlkNjI4MjhmOWMwY2I5OTUzYmUwOTJhZDJlNjkyNjY5ZDZjOWM5ZTRi
         
     | 
| 
      
 15 
     | 
    
         
            +
                ZWQ4ZTQwM2JhMmEwODBlZWMzYzRkNDg3NGRiNTViNTVjMzc4YzY=
         
     | 
| 
         @@ -25,8 +25,6 @@ 
     | 
|
| 
       25 
25 
     | 
    
         
             
              // all pattern files will be nested inside this directory.
         
     | 
| 
       26 
26 
     | 
    
         
             
              "mount_at": {{{mount_at}}},
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
              "use_theme_assets": {{{use_theme_assets}}},
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
28 
     | 
    
         
             
              // The name of the Github repo for this project. This can either be the URL or
         
     | 
| 
       31 
29 
     | 
    
         
             
              // in the form `<username>/<repo>`. The default theme uses this option, if
         
     | 
| 
       32 
30 
     | 
    
         
             
              // passed, to provide links to create issue and view source for your pattern
         
     | 
    
        data/config/ruby/docks_config.rb
    CHANGED
    
    | 
         @@ -26,8 +26,6 @@ Docks.configure do |config| 
     | 
|
| 
       26 
26 
     | 
    
         
             
              # all pattern files will be nested inside this directory.
         
     | 
| 
       27 
27 
     | 
    
         
             
              config.mount_at = {{{mount_at}}}
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
              config.use_theme_assets = {{{use_theme_assets}}}
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
29 
     | 
    
         
             
              # The name of the Github repo for this project. This can either be the URL or
         
     | 
| 
       32 
30 
     | 
    
         
             
              # in the form `<username>/<repo>`. The default theme uses this option, if
         
     | 
| 
       33 
31 
     | 
    
         
             
              # passed, to provide links to create issue and view source for your pattern
         
     | 
| 
         @@ -25,8 +25,6 @@ templates: {{{templates}}} 
     | 
|
| 
       25 
25 
     | 
    
         
             
            # all pattern files will be nested inside this directory.
         
     | 
| 
       26 
26 
     | 
    
         
             
            mount_at: {{{mount_at}}}
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
            use_theme_assets: {{{use_theme_assets}}}
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
28 
     | 
    
         
             
            # The name of the Github repo for this project. This can either be the URL or
         
     | 
| 
       31 
29 
     | 
    
         
             
            # in the form `<username>/<repo>`. The default theme uses this option, if
         
     | 
| 
       32 
30 
     | 
    
         
             
            # passed, to provide links to create issue and view source for your pattern
         
     | 
    
        data/lib/docks/build.rb
    CHANGED
    
    | 
         @@ -20,7 +20,7 @@ module Docks 
     | 
|
| 
       20 
20 
     | 
    
         
             
                  def method_missing(meth)
         
     | 
| 
       21 
21 
     | 
    
         
             
                    if options.respond_to?(meth)
         
     | 
| 
       22 
22 
     | 
    
         
             
                      present(options.send(meth), meth)
         
     | 
| 
       23 
     | 
    
         
            -
                    elsif (result = default_config.instance_variable_get("@#{meth}".to_sym))
         
     | 
| 
      
 23 
     | 
    
         
            +
                    elsif !(result = default_config.instance_variable_get("@#{meth}".to_sym)).nil?
         
     | 
| 
       24 
24 
     | 
    
         
             
                      present(result, meth)
         
     | 
| 
       25 
25 
     | 
    
         
             
                    else
         
     | 
| 
       26 
26 
     | 
    
         
             
                      super
         
     | 
| 
         @@ -104,10 +104,15 @@ module Docks 
     | 
|
| 
       104 
104 
     | 
    
         
             
                end
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
       106 
106 
     | 
    
         
             
                def self.setup(options)
         
     | 
| 
       107 
     | 
    
         
            -
                  @options = OpenStruct.new(options)
         
     | 
| 
      
 107 
     | 
    
         
            +
                  @options = options = OpenStruct.new(options)
         
     | 
| 
       108 
108 
     | 
    
         
             
                  @assets_dir = File.join(Dir.pwd, Docks::ASSETS_DIR)
         
     | 
| 
       109 
109 
     | 
    
         
             
                  FileUtils.mkdir_p(@assets_dir)
         
     | 
| 
       110 
110 
     | 
    
         | 
| 
      
 111 
     | 
    
         
            +
                  if options.theme
         
     | 
| 
      
 112 
     | 
    
         
            +
                    theme = Themes.for(options.theme)
         
     | 
| 
      
 113 
     | 
    
         
            +
                    theme.configure(Docks.config) if theme && theme.respond_to?(:configure)
         
     | 
| 
      
 114 
     | 
    
         
            +
                  end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
       111 
116 
     | 
    
         
             
                  if Dir[CONFIG_FILE].empty?
         
     | 
| 
       112 
117 
     | 
    
         
             
                    setup_config
         
     | 
| 
       113 
118 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/docks/configuration.rb
    CHANGED
    
    | 
         @@ -16,8 +16,7 @@ module Docks 
     | 
|
| 
       16 
16 
     | 
    
         
             
                  :sources,
         
     | 
| 
       17 
17 
     | 
    
         
             
                  :destination,
         
     | 
| 
       18 
18 
     | 
    
         
             
                  :cache_location,
         
     | 
| 
       19 
     | 
    
         
            -
                  :templates 
     | 
| 
       20 
     | 
    
         
            -
                  :helpers
         
     | 
| 
      
 19 
     | 
    
         
            +
                  :templates
         
     | 
| 
       21 
20 
     | 
    
         
             
                ]
         
     | 
| 
       22 
21 
     | 
    
         | 
| 
       23 
22 
     | 
    
         
             
                # Key details — these are required
         
     | 
| 
         @@ -28,7 +27,7 @@ module Docks 
     | 
|
| 
       28 
27 
     | 
    
         | 
| 
       29 
28 
     | 
    
         
             
                # Random assortment of other stuff
         
     | 
| 
       30 
29 
     | 
    
         
             
                attr_accessor :github_repo, :mount_at, :helpers, :compiled_assets,
         
     | 
| 
       31 
     | 
    
         
            -
                              :naming_convention, :pattern_id, :paginate 
     | 
| 
      
 30 
     | 
    
         
            +
                              :naming_convention, :pattern_id, :paginate
         
     | 
| 
       32 
31 
     | 
    
         | 
| 
       33 
32 
     | 
    
         
             
                # Stateful stuff
         
     | 
| 
       34 
33 
     | 
    
         
             
                attr_reader :configured
         
     | 
| 
         @@ -68,6 +67,10 @@ module Docks 
     | 
|
| 
       68 
67 
     | 
    
         
             
                  !!@paginate
         
     | 
| 
       69 
68 
     | 
    
         
             
                end
         
     | 
| 
       70 
69 
     | 
    
         | 
| 
      
 70 
     | 
    
         
            +
                def has_theme?
         
     | 
| 
      
 71 
     | 
    
         
            +
                  !!@theme
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
       71 
74 
     | 
    
         
             
                def pattern_id(*args)
         
     | 
| 
       72 
75 
     | 
    
         
             
                  Docks.pattern_id(*args)
         
     | 
| 
       73 
76 
     | 
    
         
             
                end
         
     | 
| 
         @@ -104,6 +107,16 @@ module Docks 
     | 
|
| 
       104 
107 
     | 
    
         
             
                  yield Parser
         
     | 
| 
       105 
108 
     | 
    
         
             
                end
         
     | 
| 
       106 
109 
     | 
    
         | 
| 
      
 110 
     | 
    
         
            +
                def helpers
         
     | 
| 
      
 111 
     | 
    
         
            +
                  @helpers.map do |helper|
         
     | 
| 
      
 112 
     | 
    
         
            +
                    if helper.kind_of?(String)
         
     | 
| 
      
 113 
     | 
    
         
            +
                      make_path_absolute(helper)
         
     | 
| 
      
 114 
     | 
    
         
            +
                    else
         
     | 
| 
      
 115 
     | 
    
         
            +
                      helper
         
     | 
| 
      
 116 
     | 
    
         
            +
                    end
         
     | 
| 
      
 117 
     | 
    
         
            +
                  end
         
     | 
| 
      
 118 
     | 
    
         
            +
                end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
       107 
120 
     | 
    
         
             
                ROOT_DEPENDENT_PATHS.each do |path|
         
     | 
| 
       108 
121 
     | 
    
         
             
                  define_method(path) do
         
     | 
| 
       109 
122 
     | 
    
         
             
                    paths = instance_variable_get("@#{path.to_s}".to_sym)
         
     | 
| 
         @@ -125,12 +138,11 @@ module Docks 
     | 
|
| 
       125 
138 
     | 
    
         
             
                  ]
         
     | 
| 
       126 
139 
     | 
    
         
             
                  @compiled_assets = []
         
     | 
| 
       127 
140 
     | 
    
         
             
                  @github_repo = ""
         
     | 
| 
       128 
     | 
    
         
            -
                  @paginate = :pattern
         
     | 
| 
       129 
141 
     | 
    
         
             
                  @naming_convention = NamingConventions::BEM.instance
         
     | 
| 
       130 
142 
     | 
    
         
             
                  @helpers = []
         
     | 
| 
       131 
143 
     | 
    
         | 
| 
       132 
     | 
    
         
            -
                  @theme =  
     | 
| 
       133 
     | 
    
         
            -
                  @ 
     | 
| 
      
 144 
     | 
    
         
            +
                  @theme = false
         
     | 
| 
      
 145 
     | 
    
         
            +
                  @paginate = false
         
     | 
| 
       134 
146 
     | 
    
         | 
| 
       135 
147 
     | 
    
         
             
                  @root = Pathname.pwd
         
     | 
| 
       136 
148 
     | 
    
         
             
                  @cache_location = ".#{Docks::Cache::DIR}"
         
     | 
| 
         @@ -186,7 +198,7 @@ module Docks 
     | 
|
| 
       186 
198 
     | 
    
         
             
                end
         
     | 
| 
       187 
199 
     | 
    
         | 
| 
       188 
200 
     | 
    
         
             
                if File.extname(configurer) =~ /rb/
         
     | 
| 
       189 
     | 
    
         
            -
                  self.class_eval(File.read(configurer))
         
     | 
| 
      
 201 
     | 
    
         
            +
                  self.class_eval(File.read(configurer), configurer, 0)
         
     | 
| 
       190 
202 
     | 
    
         
             
                else
         
     | 
| 
       191 
203 
     | 
    
         
             
                  Languages.register_bundled_languages
         
     | 
| 
       192 
204 
     | 
    
         
             
                  language = Languages.language_for(configurer)
         
     | 
    
        data/lib/docks/helpers.rb
    CHANGED
    
    
| 
         @@ -34,13 +34,13 @@ module Docks 
     | 
|
| 
       34 
34 
     | 
    
         
             
                  end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                  def docks_stylesheet(stylesheet = :main)
         
     | 
| 
       37 
     | 
    
         
            -
                    return unless Docks.config. 
     | 
| 
      
 37 
     | 
    
         
            +
                    return unless Docks.config.has_theme?
         
     | 
| 
       38 
38 
     | 
    
         
             
                    postfix = (stylesheet.to_sym == :main ? "" : "-#{stylesheet.to_s}")
         
     | 
| 
       39 
39 
     | 
    
         
             
                    stylesheet_link_tag("docks#{postfix}.css")
         
     | 
| 
       40 
40 
     | 
    
         
             
                  end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                  def docks_javascript(script = :main)
         
     | 
| 
       43 
     | 
    
         
            -
                    return unless Docks.config. 
     | 
| 
      
 43 
     | 
    
         
            +
                    return unless Docks.config.has_theme?
         
     | 
| 
       44 
44 
     | 
    
         
             
                    postfix = (script.to_sym == :main ? "" : "_#{script.to_s}")
         
     | 
| 
       45 
45 
     | 
    
         
             
                    javascript_include_tag("docks#{postfix}.js")
         
     | 
| 
       46 
46 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -58,29 +58,16 @@ module Docks 
     | 
|
| 
       58 
58 
     | 
    
         
             
                  end
         
     | 
| 
       59 
59 
     | 
    
         | 
| 
       60 
60 
     | 
    
         
             
                  def render_description(description, options = {})
         
     | 
| 
       61 
     | 
    
         
            -
                    @example_count ||= 0
         
     | 
| 
       62 
61 
     | 
    
         
             
                    description.gsub! /(href\s*=\s*['"])@link\s([^'"]*)(.)/ do |match|
         
     | 
| 
       63 
62 
     | 
    
         
             
                      "#{$1}#{docks_path($2, options)}#{$3}"
         
     | 
| 
       64 
63 
     | 
    
         
             
                    end
         
     | 
| 
       65 
64 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                    render(layout: false, inline: description 
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                      code = $1.dup
         
     | 
| 
       69 
     | 
    
         
            -
                      has_demo = match.include?("data-has-demo")
         
     | 
| 
       70 
     | 
    
         
            -
                      language = match.match(/data\-language=["']([^'"]*)/).captures.first
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                      code_details = []
         
     | 
| 
       73 
     | 
    
         
            -
                      code_details << { code: code, language: language, label: "Helper" }
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                      if has_demo
         
     | 
| 
       76 
     | 
    
         
            -
                        code_details << { code: render(inline: code, layout: false), language: "html", label: "Markup" }
         
     | 
| 
       77 
     | 
    
         
            -
                      end
         
     | 
| 
      
 65 
     | 
    
         
            +
                    render(layout: false, inline: render_description_with_theme(description, options))
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
       78 
67 
     | 
    
         | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                                       demo?: has_demo
         
     | 
| 
       83 
     | 
    
         
            -
                    })
         
     | 
| 
      
 68 
     | 
    
         
            +
                  # To be (optionally) overriden in themes
         
     | 
| 
      
 69 
     | 
    
         
            +
                  def render_description_with_theme(description, options = {})
         
     | 
| 
      
 70 
     | 
    
         
            +
                    description
         
     | 
| 
       84 
71 
     | 
    
         
             
                  end
         
     | 
| 
       85 
72 
     | 
    
         
             
                end
         
     | 
| 
       86 
73 
     | 
    
         
             
              end
         
     | 
    
        data/lib/docks/version.rb
    CHANGED
    
    
    
        data/spec/lib/build_spec.rb
    CHANGED
    
    | 
         @@ -69,6 +69,13 @@ describe Docks::Builder do 
     | 
|
| 
       69 
69 
     | 
    
         
             
                  expect(File.read(copied_file)).to eq "# foo"
         
     | 
| 
       70 
70 
     | 
    
         
             
                end
         
     | 
| 
       71 
71 
     | 
    
         | 
| 
      
 72 
     | 
    
         
            +
                it "preconfigures with the specified theme" do
         
     | 
| 
      
 73 
     | 
    
         
            +
                  default_options[:theme] = "API"
         
     | 
| 
      
 74 
     | 
    
         
            +
                  subject.setup(default_options)
         
     | 
| 
      
 75 
     | 
    
         
            +
                  expect(Docks.config.theme).to be_a Docks::Themes::API
         
     | 
| 
      
 76 
     | 
    
         
            +
                  expect(Docks.config.paginate).to eq "pattern"
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
       72 
79 
     | 
    
         
             
                it "configures the pattern library with the new config file" do
         
     | 
| 
       73 
80 
     | 
    
         
             
                  expect(Docks).to receive(:configure).with no_args
         
     | 
| 
       74 
81 
     | 
    
         
             
                  subject.setup(default_options)
         
     | 
| 
         @@ -183,7 +190,7 @@ describe Docks::Builder do 
     | 
|
| 
       183 
190 
     | 
    
         | 
| 
       184 
191 
     | 
    
         
             
              describe ".parse" do
         
     | 
| 
       185 
192 
     | 
    
         
             
                before :each do
         
     | 
| 
       186 
     | 
    
         
            -
                  Docks.configure_with(root: empty_dir 
     | 
| 
      
 193 
     | 
    
         
            +
                  Docks.configure_with(root: empty_dir)
         
     | 
| 
       187 
194 
     | 
    
         
             
                end
         
     | 
| 
       188 
195 
     | 
    
         | 
| 
       189 
196 
     | 
    
         
             
                it "adds the parse function to the top-level Docks namespace" do
         
     | 
| 
         @@ -228,7 +235,7 @@ describe Docks::Builder do 
     | 
|
| 
       228 
235 
     | 
    
         
             
                  FileUtils.mkdir_p(existing_dir)
         
     | 
| 
       229 
236 
     | 
    
         
             
                  FileUtils.cd(existing_dir)
         
     | 
| 
       230 
237 
     | 
    
         
             
                  Docks::Templates.send(:clean)
         
     | 
| 
       231 
     | 
    
         
            -
                  Docks.configure_with(destination: destination, root: existing_dir)
         
     | 
| 
      
 238 
     | 
    
         
            +
                  Docks.configure_with(destination: destination, root: existing_dir, theme: "API", paginate: "pattern")
         
     | 
| 
       232 
239 
     | 
    
         | 
| 
       233 
240 
     | 
    
         
             
                  default_options[:script_language] = "coffeescript"
         
     | 
| 
       234 
241 
     | 
    
         
             
                  subject.setup(default_options)
         
     | 
| 
         @@ -49,8 +49,7 @@ describe Docks::Configuration do 
     | 
|
| 
       49 
49 
     | 
    
         
             
                expect(subject.templates).to eq subject.root + "#{Docks::ASSETS_DIR}/templates"
         
     | 
| 
       50 
50 
     | 
    
         
             
                expect(subject.asset_folders).to eq OpenStruct.new(styles: "styles", scripts: "scripts")
         
     | 
| 
       51 
51 
     | 
    
         
             
                expect(subject.mount_at).to eq "pattern-library"
         
     | 
| 
       52 
     | 
    
         
            -
                expect(subject.theme).to  
     | 
| 
       53 
     | 
    
         
            -
                expect(subject.use_theme_assets).to be true
         
     | 
| 
      
 52 
     | 
    
         
            +
                expect(subject.theme).to be false
         
     | 
| 
       54 
53 
     | 
    
         
             
              end
         
     | 
| 
       55 
54 
     | 
    
         | 
| 
       56 
55 
     | 
    
         
             
              describe "#root=" do
         
     | 
| 
         @@ -11,6 +11,7 @@ describe Docks::Helpers::Path do 
     | 
|
| 
       11 
11 
     | 
    
         
             
              before(:each) do
         
     | 
| 
       12 
12 
     | 
    
         
             
                Docks::Languages.register_bundled_languages
         
     | 
| 
       13 
13 
     | 
    
         
             
                Docks.current_render_destination = Docks.config.destination + "baz/index.html"
         
     | 
| 
      
 14 
     | 
    
         
            +
                Docks.configure_with(theme: "API")
         
     | 
| 
       14 
15 
     | 
    
         
             
                subject.instance_variable_set(:@pattern_library, pattern_library)
         
     | 
| 
       15 
16 
     | 
    
         
             
                subject.instance_variable_set(:@pattern, pattern)
         
     | 
| 
       16 
17 
     | 
    
         
             
              end
         
     | 
| 
         @@ -178,8 +179,8 @@ describe Docks::Helpers::Path do 
     | 
|
| 
       178 
179 
     | 
    
         
             
                  expect(subject.docks_stylesheet(:demo)).to eq subject.stylesheet_link_tag("docks-demo.css")
         
     | 
| 
       179 
180 
     | 
    
         
             
                end
         
     | 
| 
       180 
181 
     | 
    
         | 
| 
       181 
     | 
    
         
            -
                it "returns nothing when  
     | 
| 
       182 
     | 
    
         
            -
                  Docks.configure_with( 
     | 
| 
      
 182 
     | 
    
         
            +
                it "returns nothing when there is no theme" do
         
     | 
| 
      
 183 
     | 
    
         
            +
                  Docks.configure_with(theme: false)
         
     | 
| 
       183 
184 
     | 
    
         
             
                  expect(subject.docks_stylesheet).to be nil
         
     | 
| 
       184 
185 
     | 
    
         
             
                end
         
     | 
| 
       185 
186 
     | 
    
         
             
              end
         
     | 
| 
         @@ -193,8 +194,8 @@ describe Docks::Helpers::Path do 
     | 
|
| 
       193 
194 
     | 
    
         
             
                  expect(subject.docks_javascript(:demo)).to eq subject.javascript_include_tag("docks_demo.js")
         
     | 
| 
       194 
195 
     | 
    
         
             
                end
         
     | 
| 
       195 
196 
     | 
    
         | 
| 
       196 
     | 
    
         
            -
                it "returns nothing when  
     | 
| 
       197 
     | 
    
         
            -
                  Docks.configure_with( 
     | 
| 
      
 197 
     | 
    
         
            +
                it "returns nothing when there is no theme" do
         
     | 
| 
      
 198 
     | 
    
         
            +
                  Docks.configure_with(theme: false)
         
     | 
| 
       198 
199 
     | 
    
         
             
                  expect(subject.docks_javascript).to be nil
         
     | 
| 
       199 
200 
     | 
    
         
             
                end
         
     | 
| 
       200 
201 
     | 
    
         
             
              end
         
     | 
| 
         @@ -102,57 +102,12 @@ describe Docks::Helpers::Render do 
     | 
|
| 
       102 
102 
     | 
    
         
             
                    expect(pattern.description).to eq "foo bar <a href='/pattern-library/baz'>baz</a>"
         
     | 
| 
       103 
103 
     | 
    
         
             
                  end
         
     | 
| 
       104 
104 
     | 
    
         | 
| 
       105 
     | 
    
         
            -
                   
     | 
| 
       106 
     | 
    
         
            -
                     
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                     
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
                     
     | 
| 
       111 
     | 
    
         
            -
                    let(:language) { "html" }
         
     | 
| 
       112 
     | 
    
         
            -
                    let(:markdown) { Redcarpet::Markdown.new(Docks::Markdown::Renderer, fenced_code_blocks: true) }
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                    it "renders a code block" do
         
     | 
| 
       115 
     | 
    
         
            -
                      pattern.description = markdown.render(markdown_code_block)
         
     | 
| 
       116 
     | 
    
         
            -
                      expect(subject).to receive(:docks_code_block) do |options|
         
     | 
| 
       117 
     | 
    
         
            -
                        expect(options[:hideable?]).to be false
         
     | 
| 
       118 
     | 
    
         
            -
                        expect(options[:demo?]).to be false
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
                        code = options[:code]
         
     | 
| 
       121 
     | 
    
         
            -
                        expect(code.length).to be 1
         
     | 
| 
       122 
     | 
    
         
            -
                        expect(code.first[:code].strip).to eq code_block
         
     | 
| 
       123 
     | 
    
         
            -
                        expect(code.first[:language]).to eq language
         
     | 
| 
       124 
     | 
    
         
            -
                      end
         
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
                      subject.render_everything
         
     | 
| 
       127 
     | 
    
         
            -
                    end
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
                    it "renders a code block with the a demo" do
         
     | 
| 
       130 
     | 
    
         
            -
                      pattern.description = markdown.render(markdown_code_block(with_demo: true))
         
     | 
| 
       131 
     | 
    
         
            -
                      expect(subject).to receive(:docks_code_block) do |options|
         
     | 
| 
       132 
     | 
    
         
            -
                        expect(options[:hideable?]).to be true
         
     | 
| 
       133 
     | 
    
         
            -
                        expect(options[:demo?]).to be true
         
     | 
| 
       134 
     | 
    
         
            -
                      end
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
                      subject.render_everything
         
     | 
| 
       137 
     | 
    
         
            -
                    end
         
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
                    it "adds a unique ID to each demo" do
         
     | 
| 
       140 
     | 
    
         
            -
                      pattern.description = markdown.render(markdown_code_block * 2)
         
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
       142 
     | 
    
         
            -
                      ids = []
         
     | 
| 
       143 
     | 
    
         
            -
                      expect(subject).to receive(:docks_code_block).twice do |options|
         
     | 
| 
       144 
     | 
    
         
            -
                        ids.push(options[:id])
         
     | 
| 
       145 
     | 
    
         
            -
                      end
         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
                      subject.render_everything
         
     | 
| 
       148 
     | 
    
         
            -
                      expect(ids).to eq ids.uniq
         
     | 
| 
       149 
     | 
    
         
            -
                    end
         
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
                    private
         
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       153 
     | 
    
         
            -
                    def markdown_code_block(options = {})
         
     | 
| 
       154 
     | 
    
         
            -
                      options.fetch(:with_demo, false) ? "```#{language}_demo\n#{code_block}\n```" : "```#{language}\n#{code_block}\n```\n"
         
     | 
| 
       155 
     | 
    
         
            -
                    end
         
     | 
| 
      
 105 
     | 
    
         
            +
                  it "calls the theme's render description helper" do
         
     | 
| 
      
 106 
     | 
    
         
            +
                    allow(subject).to receive(:render) { |opts| opts[:inline] }
         
     | 
| 
      
 107 
     | 
    
         
            +
                    pattern.description = "foo bar"
         
     | 
| 
      
 108 
     | 
    
         
            +
                    expect(subject).to receive(:render_description_with_theme).with("foo bar", hash_including(:language)).and_return("baz qux")
         
     | 
| 
      
 109 
     | 
    
         
            +
                    subject.render_everything
         
     | 
| 
      
 110 
     | 
    
         
            +
                    expect(pattern.description).to eq "baz qux"
         
     | 
| 
       156 
111 
     | 
    
         
             
                  end
         
     | 
| 
       157 
112 
     | 
    
         
             
                end
         
     | 
| 
       158 
113 
     | 
    
         
             
              end
         
     | 
    
        data/spec/lib/helpers_spec.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "spec_helper"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "docks_theme_api"
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            describe Docks::Helpers do
         
     | 
| 
       4 
5 
     | 
    
         
             
              describe ".add_helpers_to" do
         
     | 
| 
         @@ -17,8 +18,24 @@ describe Docks::Helpers do 
     | 
|
| 
       17 
18 
     | 
    
         
             
                  end
         
     | 
| 
       18 
19 
     | 
    
         
             
                end
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
      
 21 
     | 
    
         
            +
                it "adds all theme helpers" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  theme = Docks::Themes::API.instance
         
     | 
| 
      
 23 
     | 
    
         
            +
                  helpers = []
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  Docks.configure_with(theme: theme)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  allow(renderer).to receive(:helpers) do |*args|
         
     | 
| 
      
 27 
     | 
    
         
            +
                    helpers = helpers.concat(args)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  described_class.add_helpers_to(renderer)
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  Docks.config.theme.helpers.each do |helper|
         
     | 
| 
      
 33 
     | 
    
         
            +
                    expect(helpers).to include helper
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
       20 
37 
     | 
    
         
             
                it "adds any user-configured helpers" do
         
     | 
| 
       21 
     | 
    
         
            -
                  Docks.configure_with 
     | 
| 
      
 38 
     | 
    
         
            +
                  Docks.configure_with(helpers: ["foo.txt", "bar.txt"])
         
     | 
| 
       22 
39 
     | 
    
         | 
| 
       23 
40 
     | 
    
         
             
                  helpers = []
         
     | 
| 
       24 
41 
     | 
    
         
             
                  allow(renderer).to receive(:helpers) do |*args|
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: docks_app
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Chris Sauve
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015-08- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-08-21 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: redcarpet
         
     |