lookbook 1.2.1 → 1.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +47 -14
- data/app/assets/lookbook/css/themes/blue.css +4 -2
- data/app/assets/lookbook/css/themes/green.css +66 -0
- data/app/assets/lookbook/css/themes/indigo.css +4 -2
- data/app/assets/lookbook/css/themes/rose.css +66 -0
- data/app/assets/lookbook/css/themes/zinc.css +4 -2
- data/app/components/lookbook/base_component.rb +2 -2
- data/app/components/lookbook/code/component.css +2 -2
- data/app/components/lookbook/code/component.html.erb +3 -2
- data/app/components/lookbook/code/component.rb +13 -2
- data/app/components/lookbook/code/highlight_github.css +406 -0
- data/app/components/lookbook/header/component.html.erb +1 -1
- data/app/components/lookbook/inspector_panel/component.rb +4 -6
- data/app/components/lookbook/nav/component.rb +8 -15
- data/app/components/lookbook/nav/directory/component.html.erb +28 -0
- data/app/components/lookbook/nav/directory/component.rb +4 -0
- data/app/components/lookbook/nav/{item → entity}/component.html.erb +8 -8
- data/app/components/lookbook/nav/entity/component.rb +49 -0
- data/app/components/lookbook/nav/item/component.css +15 -0
- data/app/components/lookbook/nav/item/component.js +4 -0
- data/app/components/lookbook/nav/item/component.rb +13 -56
- data/app/components/lookbook/params/editor/component.html.erb +2 -2
- data/app/components/lookbook/params/editor/component.rb +3 -10
- data/app/components/lookbook/params/field/component.css +3 -3
- data/app/components/lookbook/params/field/component.html.erb +8 -8
- data/app/components/lookbook/params/field/component.rb +21 -72
- data/app/components/lookbook/split_layout/component.html.erb +1 -1
- data/app/components/lookbook/tabs/component.html.erb +1 -1
- data/app/components/lookbook/tabs/component.js +4 -0
- data/app/components/lookbook/tag_component.rb +1 -1
- data/app/components/lookbook/viewport/component.css +1 -1
- data/app/components/lookbook/viewport/component.html.erb +1 -1
- data/app/components/lookbook/viewport/component.rb +1 -1
- data/app/controllers/concerns/lookbook/targetable_concern.rb +131 -0
- data/app/controllers/concerns/lookbook/with_preview_controller_concern.rb +13 -0
- data/app/controllers/lookbook/application_controller.rb +21 -9
- data/app/controllers/lookbook/inspector_controller.rb +45 -0
- data/app/controllers/lookbook/page_controller.rb +13 -9
- data/app/controllers/lookbook/pages_controller.rb +9 -15
- data/app/controllers/lookbook/previews_controller.rb +4 -210
- data/app/helpers/lookbook/application_helper.rb +2 -2
- data/app/helpers/lookbook/output_helper.rb +5 -5
- data/app/helpers/lookbook/page_helper.rb +7 -4
- data/app/views/layouts/lookbook/application.html.erb +40 -38
- data/app/views/layouts/lookbook/page.html.erb +2 -2
- data/app/views/layouts/lookbook/shell.html.erb +3 -2
- data/app/views/layouts/lookbook/skeleton.html.erb +7 -7
- data/app/views/lookbook/index.html.erb +13 -2
- data/app/views/lookbook/{previews → inspector}/inputs/_color.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_range.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_select.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_text.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_textarea.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/inputs/_toggle.html.erb +5 -5
- data/app/views/lookbook/{previews → inspector}/panels/_content.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/panels/_notes.html.erb +2 -2
- data/app/views/lookbook/{previews → inspector}/panels/_output.html.erb +0 -0
- data/app/views/lookbook/inspector/panels/_params.html.erb +15 -0
- data/app/views/lookbook/{previews → inspector}/panels/_preview.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/panels/_source.html.erb +0 -0
- data/app/views/lookbook/{previews → inspector}/show.html.erb +5 -2
- data/config/app.yml +11 -1
- data/config/inputs.yml +12 -12
- data/config/languages.yml +41 -0
- data/config/panels.yml +6 -6
- data/config/routes.rb +5 -5
- data/config/tags.yml +8 -1
- data/lib/lookbook/engine.rb +103 -130
- data/lib/lookbook/entities/collections/component_collection.rb +4 -0
- data/lib/lookbook/entities/collections/concerns/hierarchical_collection.rb +23 -0
- data/lib/lookbook/entities/collections/entity_collection.rb +61 -0
- data/lib/lookbook/entities/collections/page_collection.rb +30 -0
- data/lib/lookbook/entities/collections/preview_collection.rb +41 -0
- data/lib/lookbook/entities/collections/preview_example_collection.rb +4 -0
- data/lib/lookbook/entities/component.rb +31 -0
- data/lib/lookbook/entities/concerns/annotatable.rb +58 -0
- data/lib/lookbook/entities/concerns/inspectable.rb +44 -0
- data/lib/lookbook/entities/concerns/locatable.rb +73 -0
- data/lib/lookbook/entities/concerns/navigable.rb +43 -0
- data/lib/lookbook/entities/entity.rb +53 -0
- data/lib/lookbook/entities/page.rb +80 -0
- data/lib/lookbook/entities/page_section.rb +43 -0
- data/lib/lookbook/entities/preview.rb +87 -0
- data/lib/lookbook/entities/preview_example.rb +100 -0
- data/lib/lookbook/entities/preview_group.rb +48 -0
- data/lib/lookbook/file_watcher.rb +47 -0
- data/lib/lookbook/lang.rb +12 -35
- data/lib/lookbook/param.rb +99 -0
- data/lib/lookbook/{preview_controller.rb → preview_actions.rb} +14 -3
- data/lib/lookbook/preview_parser.rb +53 -0
- data/lib/lookbook/process.rb +21 -0
- data/lib/lookbook/rendered_example.rb +37 -0
- data/lib/lookbook/services/code/code_beautifier.rb +21 -0
- data/lib/lookbook/services/code/code_highlighter.rb +69 -0
- data/lib/lookbook/services/code/code_indenter.rb +14 -0
- data/lib/lookbook/services/data/parsers/data_parser.rb +22 -0
- data/lib/lookbook/services/data/parsers/json_parser.rb +7 -0
- data/lib/lookbook/services/data/parsers/yaml_parser.rb +7 -0
- data/lib/lookbook/services/data/resolvers/data_resolver.rb +70 -0
- data/lib/lookbook/services/data/resolvers/eval_resolver.rb +10 -0
- data/lib/lookbook/services/data/resolvers/file_resolver.rb +28 -0
- data/lib/lookbook/services/data/resolvers/method_resolver.rb +10 -0
- data/lib/lookbook/services/data/resolvers/yaml_resolver.rb +18 -0
- data/lib/lookbook/services/entities/entity_tree_builder.rb +45 -0
- data/lib/lookbook/services/markdown_renderer.rb +29 -0
- data/lib/lookbook/services/position_prefix_parser.rb +16 -0
- data/lib/lookbook/services/string_value_caster.rb +60 -0
- data/lib/lookbook/services/tags/tag_options_parser.rb +62 -0
- data/lib/lookbook/services/templates/action_view_annotations_handler.rb +21 -0
- data/lib/lookbook/services/templates/action_view_annotations_stripper.rb +15 -0
- data/lib/lookbook/services/templates/frontmatter_extractor.rb +28 -0
- data/lib/lookbook/services/templates/styles_extractor.rb +38 -0
- data/lib/lookbook/services/{search_param_builder.rb → urls/search_param_builder.rb} +1 -1
- data/lib/lookbook/services/{search_param_parser.rb → urls/search_param_parser.rb} +1 -1
- data/lib/lookbook/stores/config_store.rb +12 -9
- data/lib/lookbook/stores/input_store.rb +7 -3
- data/lib/lookbook/stores/panel_store.rb +2 -2
- data/lib/lookbook/stores/tag_store.rb +3 -5
- data/lib/lookbook/support/null_object.rb +10 -0
- data/lib/lookbook/support/service.rb +2 -2
- data/lib/lookbook/support/store.rb +2 -35
- data/lib/lookbook/support/tree_node.rb +87 -0
- data/lib/lookbook/support/utils/path_utils.rb +32 -5
- data/lib/lookbook/support/utils/utils.rb +24 -0
- data/lib/lookbook/tags/component_tag.rb +13 -0
- data/lib/lookbook/tags/custom_tag.rb +61 -0
- data/lib/lookbook/tags/display_tag.rb +15 -0
- data/lib/lookbook/tags/hidden_tag.rb +13 -0
- data/lib/lookbook/tags/id_tag.rb +7 -0
- data/lib/lookbook/tags/label_tag.rb +4 -0
- data/lib/lookbook/tags/logical_path_tag.rb +7 -0
- data/lib/lookbook/tags/param_tag.rb +63 -0
- data/lib/lookbook/tags/position_tag.rb +16 -0
- data/lib/lookbook/tags/source_tag.rb +7 -0
- data/lib/lookbook/tags/tag_provider.rb +18 -0
- data/lib/lookbook/tags/yard_tag.rb +90 -0
- data/lib/lookbook/theme.rb +8 -0
- data/lib/lookbook/version.rb +1 -1
- data/lib/lookbook/websocket.rb +60 -0
- data/lib/lookbook.rb +13 -8
- data/public/lookbook-assets/css/lookbook.css +487 -411
- data/public/lookbook-assets/css/lookbook.css.map +1 -1
- data/public/lookbook-assets/css/themes/blue.css +3 -1
- data/public/lookbook-assets/css/themes/blue.css.map +1 -1
- data/public/lookbook-assets/css/themes/green.css +68 -0
- data/public/lookbook-assets/css/themes/green.css.map +1 -0
- data/public/lookbook-assets/css/themes/indigo.css +3 -1
- data/public/lookbook-assets/css/themes/indigo.css.map +1 -1
- data/public/lookbook-assets/css/themes/rose.css +68 -0
- data/public/lookbook-assets/css/themes/rose.css.map +1 -0
- data/public/lookbook-assets/css/themes/zinc.css +3 -1
- data/public/lookbook-assets/css/themes/zinc.css.map +1 -1
- data/public/lookbook-assets/js/embed.js +10 -1
- data/public/lookbook-assets/js/embed.js.map +1 -1
- data/public/lookbook-assets/js/lookbook.js +358 -629
- data/public/lookbook-assets/js/lookbook.js.map +1 -1
- metadata +96 -44
- data/app/components/lookbook/code/highlight_github_light.css +0 -217
- data/app/views/lookbook/previews/panels/_params.html.erb +0 -15
- data/lib/lookbook/code_formatter.rb +0 -68
- data/lib/lookbook/collection.rb +0 -161
- data/lib/lookbook/component.rb +0 -34
- data/lib/lookbook/entity.rb +0 -47
- data/lib/lookbook/markdown.rb +0 -22
- data/lib/lookbook/page.rb +0 -195
- data/lib/lookbook/page_collection.rb +0 -19
- data/lib/lookbook/page_section.rb +0 -29
- data/lib/lookbook/params.rb +0 -157
- data/lib/lookbook/parser.rb +0 -42
- data/lib/lookbook/preview.rb +0 -174
- data/lib/lookbook/preview_collection.rb +0 -23
- data/lib/lookbook/preview_example.rb +0 -93
- data/lib/lookbook/preview_group.rb +0 -62
- data/lib/lookbook/source_inspector.rb +0 -95
- data/lib/lookbook/support/utils/attribute_utils.rb +0 -9
- data/lib/lookbook/tag.rb +0 -122
- data/lib/lookbook/tag_options.rb +0 -111
- data/lib/lookbook/tags.rb +0 -17
- data/lib/lookbook/template_parser.rb +0 -72
- data/lib/lookbook/utils.rb +0 -105
@@ -1,72 +0,0 @@
|
|
1
|
-
require "css_parser"
|
2
|
-
|
3
|
-
module Lookbook
|
4
|
-
class TemplateParser
|
5
|
-
STYLE_TAGS_REGEX = /<style(?:\s[^>]*)?>((?:(?!<\/style>).)*)<\/style>/m
|
6
|
-
FRONTMATTER_REGEX = /\A---(.|\n)*?---/
|
7
|
-
|
8
|
-
def initialize(content)
|
9
|
-
@raw_content = content.strip
|
10
|
-
@parsed_content = nil
|
11
|
-
@styles = nil
|
12
|
-
@frontmatter = nil
|
13
|
-
end
|
14
|
-
|
15
|
-
def content
|
16
|
-
parse
|
17
|
-
@parsed_content.strip.html_safe
|
18
|
-
end
|
19
|
-
|
20
|
-
def styles
|
21
|
-
parse
|
22
|
-
@styles
|
23
|
-
end
|
24
|
-
|
25
|
-
def frontmatter
|
26
|
-
parse
|
27
|
-
@frontmatter
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def parse
|
33
|
-
if @parsed_content.nil?
|
34
|
-
@styles = extract_styles(@raw_content)
|
35
|
-
content = strip_styles(@raw_content)
|
36
|
-
|
37
|
-
@frontmatter = extract_frontmatter(content)
|
38
|
-
content = strip_frontmatter(content)
|
39
|
-
|
40
|
-
@parsed_content = content
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def extract_styles(text)
|
45
|
-
styles = []
|
46
|
-
css_parser = ::CssParser::Parser.new
|
47
|
-
text.scan(STYLE_TAGS_REGEX).flatten.map(&:strip).each do |css|
|
48
|
-
css_parser.load_string! css.strip
|
49
|
-
end
|
50
|
-
css_parser.each_selector do |selector, declarations, specificity|
|
51
|
-
styles << "#{selector} { #{declarations} }"
|
52
|
-
end
|
53
|
-
styles
|
54
|
-
end
|
55
|
-
|
56
|
-
def strip_styles(text)
|
57
|
-
text.gsub(STYLE_TAGS_REGEX, "")
|
58
|
-
end
|
59
|
-
|
60
|
-
def extract_frontmatter(text)
|
61
|
-
frontmatter = {}
|
62
|
-
text.match(FRONTMATTER_REGEX) do |m|
|
63
|
-
frontmatter = YAML.safe_load(m[0])
|
64
|
-
end
|
65
|
-
frontmatter.deep_symbolize_keys
|
66
|
-
end
|
67
|
-
|
68
|
-
def strip_frontmatter(text)
|
69
|
-
text.gsub(FRONTMATTER_REGEX, "")
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
data/lib/lookbook/utils.rb
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
module Lookbook
|
2
|
-
module Utils
|
3
|
-
include Lookbook::Engine.routes.url_helpers
|
4
|
-
|
5
|
-
POSITION_PREFIX_REGEX = /^(\d+?)[-_]/
|
6
|
-
FRONTMATTER_REGEX = /\A---(.|\n)*?---/
|
7
|
-
ACTION_VIEW_ANNOTATIONS_REGEX = /<!-- (BEGIN|END) (.*) -->/
|
8
|
-
|
9
|
-
def self.strip_action_view_annotations!(text)
|
10
|
-
text&.gsub!(ACTION_VIEW_ANNOTATIONS_REGEX, "")
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.without_action_view_annotations
|
14
|
-
original_value = ActionView::Base.annotate_rendered_view_with_filenames
|
15
|
-
ActionView::Base.annotate_rendered_view_with_filenames = false
|
16
|
-
res = yield
|
17
|
-
ActionView::Base.annotate_rendered_view_with_filenames = original_value
|
18
|
-
res
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.with_optional_action_view_annotations
|
22
|
-
if ActionView::Base.respond_to?(:annotate_rendered_view_with_filenames) && Lookbook.config.preview_disable_action_view_annotations
|
23
|
-
without_action_view_annotations do
|
24
|
-
yield
|
25
|
-
end
|
26
|
-
else
|
27
|
-
yield
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
|
33
|
-
def generate_id(*args)
|
34
|
-
parts = args.map { |arg| arg.to_s.force_encoding("UTF-8").parameterize.underscore }
|
35
|
-
parts.join("-").tr("/_", "-").delete_prefix("-").delete_suffix("-").gsub("--", "-")
|
36
|
-
end
|
37
|
-
|
38
|
-
def preview_class_basename(klass)
|
39
|
-
class_name(klass).to_s.chomp("ComponentPreview").chomp("Component::Preview").chomp("::Preview").chomp("Component").chomp("Preview").chomp("::")
|
40
|
-
end
|
41
|
-
|
42
|
-
def preview_class_path(klass)
|
43
|
-
preview_class_basename(klass).underscore
|
44
|
-
end
|
45
|
-
|
46
|
-
def class_name(klass)
|
47
|
-
klass.is_a?(Class) ? klass.name : klass
|
48
|
-
end
|
49
|
-
|
50
|
-
def normalize_matchers(*matchers)
|
51
|
-
matchers.flatten.map { |m| m.gsub(/\s/, "").downcase }
|
52
|
-
end
|
53
|
-
|
54
|
-
def get_position_prefix(str)
|
55
|
-
parse_position_prefix(str).first
|
56
|
-
end
|
57
|
-
|
58
|
-
def remove_position_prefix(str)
|
59
|
-
parse_position_prefix(str).last
|
60
|
-
end
|
61
|
-
|
62
|
-
def get_frontmatter(str)
|
63
|
-
parse_frontmatter(str).first
|
64
|
-
end
|
65
|
-
|
66
|
-
def strip_frontmatter(str)
|
67
|
-
parse_frontmatter(str).last
|
68
|
-
end
|
69
|
-
|
70
|
-
def to_lookup_path(path)
|
71
|
-
path.split("/").map { |segment| remove_position_prefix(segment) }.join("/")
|
72
|
-
end
|
73
|
-
|
74
|
-
def to_preview_path(*args)
|
75
|
-
args.flatten.map { |arg| preview_class_path(arg) }.join("/")
|
76
|
-
end
|
77
|
-
|
78
|
-
protected
|
79
|
-
|
80
|
-
def default_url_options
|
81
|
-
{}
|
82
|
-
end
|
83
|
-
|
84
|
-
private
|
85
|
-
|
86
|
-
def parse_frontmatter(content)
|
87
|
-
frontmatter = content.match(FRONTMATTER_REGEX)
|
88
|
-
if frontmatter.nil?
|
89
|
-
[{}, content]
|
90
|
-
else
|
91
|
-
[YAML.safe_load(frontmatter[0]), content.gsub(FRONTMATTER_REGEX, "")]
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def parse_position_prefix(str)
|
96
|
-
pos = str.match(POSITION_PREFIX_REGEX)
|
97
|
-
if pos.nil?
|
98
|
-
[10000, str]
|
99
|
-
else
|
100
|
-
cleaned_str = str.gsub(POSITION_PREFIX_REGEX, "")
|
101
|
-
[pos[1].to_i, cleaned_str]
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|