aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/lib/nuldoc/components/page_layout.rb
blob: 4ddd09685e594bb65d33b8c6609d8fd31765194e (plain)
1
2
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
29
30
31
32
33
34
module Nuldoc
  module Components
    class PageLayout
      extend DOM::HTML

      def self.render(meta_copyright_year:, meta_description:, meta_title:, site:, config:, children:,
                      meta_keywords: nil, meta_atom_feed_href: nil)
        site_entry = config.site_entry(site)

        html(lang: 'ja-JP') do
          head do
            meta(charset: 'UTF-8')
            meta(name: 'viewport', content: 'width=device-width, initial-scale=1.0')
            meta(name: 'author', content: config.site.author)
            meta(name: 'copyright', content: "© #{meta_copyright_year} #{config.site.author}")
            meta(name: 'description', content: meta_description)
            meta(name: 'keywords', content: meta_keywords.join(',')) if meta_keywords && !meta_keywords.empty?
            meta(property: 'og:type', content: 'article')
            meta(property: 'og:title', content: meta_title)
            meta(property: 'og:description', content: meta_description)
            meta(property: 'og:site_name', content: site_entry.site_name)
            meta(property: 'og:locale', content: 'ja_JP')
            meta(name: 'Hatena::Bookmark', content: 'nocomment')
            link(rel: 'alternate', href: meta_atom_feed_href, type: 'application/atom+xml') if meta_atom_feed_href
            link(rel: 'icon', href: '/favicon.svg', type: 'image/svg+xml')
            title { text meta_title }
            StaticStylesheet.render(file_name: '/style.css', config: config)
          end
          child children
        end
      end
    end
  end
end