Class: Code::Component

Inherits:
Lookbook::BaseComponent
  • Object
show all
Defined in:
app/components/lookbook/code/component.rb

Instance Method Summary collapse

Constructor Details

#initialize(source: nil, language: :html, line_numbers: false, highlight_lines: [], start_line: 1, wrap: false, theme: nil, dark: false, full_height: false, **html_attrs) ⇒ Component

Returns a new instance of Component.



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/components/lookbook/code/component.rb', line 3

def initialize(
  source: nil,
  language: :html,
  line_numbers: false,
  highlight_lines: [],
  start_line: 1,
  wrap: false,
  theme: nil,
  dark: false,
  full_height: false,
  **html_attrs
)
  @source_code = source
  @highlight_opts = {
    language: language,
    line_numbers: line_numbers,
    highlight_lines: highlight_lines,
    start_line: start_line
  }
  @highlight_lines = highlight_lines
  @wrap = wrap
  @theme = theme
  @dark = dark
  @full_height = full_height
  super(**html_attrs)
end

Instance Method Details

#before_renderObject



54
55
56
57
# File 'app/components/lookbook/code/component.rb', line 54

def before_render
  @theme ||= Lookbook.config.highlighter_options.fetch(:theme, :github).to_sym
  @dark ||= !!Lookbook.config.highlighter_options.fetch(:dark, false)
end

#focussed?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/components/lookbook/code/component.rb', line 42

def focussed?
  @highlight_opts[:highlight_lines].any?
end

#full_height?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'app/components/lookbook/code/component.rb', line 46

def full_height?
  @full_height
end

#is_dark?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'app/components/lookbook/code/component.rb', line 50

def is_dark?
  @dark
end

#numbered?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/components/lookbook/code/component.rb', line 38

def numbered?
  @highlight_opts[:line_numbers] == true
end

#sourceObject



34
35
36
# File 'app/components/lookbook/code/component.rb', line 34

def source
  (@source_code || content).strip_heredoc.strip
end

#theme_classnameObject



30
31
32
# File 'app/components/lookbook/code/component.rb', line 30

def theme_classname
  "theme-#{@theme.to_s.tr("_", "-")}"
end