cosensee 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +56 -0
  4. data/.rubocop_todo.yml +7 -0
  5. data/README.md +40 -0
  6. data/Rakefile +10 -0
  7. data/lib/cosensee/blank_bracket.rb +8 -0
  8. data/lib/cosensee/bracket_parser.rb +82 -0
  9. data/lib/cosensee/bracket_serializer.rb +26 -0
  10. data/lib/cosensee/code.rb +18 -0
  11. data/lib/cosensee/codeblock.rb +18 -0
  12. data/lib/cosensee/command_line.rb +18 -0
  13. data/lib/cosensee/decorate_bracket.rb +16 -0
  14. data/lib/cosensee/double_bracket.rb +20 -0
  15. data/lib/cosensee/empty_bracket.rb +8 -0
  16. data/lib/cosensee/error.rb +5 -0
  17. data/lib/cosensee/external_link_bracket.rb +8 -0
  18. data/lib/cosensee/formula_bracket.rb +8 -0
  19. data/lib/cosensee/hash_tag.rb +19 -0
  20. data/lib/cosensee/html_builder.rb +59 -0
  21. data/lib/cosensee/html_encodable.rb +12 -0
  22. data/lib/cosensee/icon_bracket.rb +8 -0
  23. data/lib/cosensee/image_bracket.rb +8 -0
  24. data/lib/cosensee/indent.rb +25 -0
  25. data/lib/cosensee/internal_link_bracket.rb +8 -0
  26. data/lib/cosensee/line.rb +47 -0
  27. data/lib/cosensee/line_parser.rb +253 -0
  28. data/lib/cosensee/link.rb +18 -0
  29. data/lib/cosensee/link_encodable.rb +26 -0
  30. data/lib/cosensee/page.rb +68 -0
  31. data/lib/cosensee/page_store.rb +63 -0
  32. data/lib/cosensee/parsed_bracket.rb +42 -0
  33. data/lib/cosensee/parsed_line.rb +76 -0
  34. data/lib/cosensee/project.rb +46 -0
  35. data/lib/cosensee/quote.rb +22 -0
  36. data/lib/cosensee/tailwind_renderer/blank_bracket.rb +11 -0
  37. data/lib/cosensee/tailwind_renderer/code.rb +14 -0
  38. data/lib/cosensee/tailwind_renderer/codeblock_builder.rb +37 -0
  39. data/lib/cosensee/tailwind_renderer/command_line.rb +17 -0
  40. data/lib/cosensee/tailwind_renderer/decorate_bracket.rb +25 -0
  41. data/lib/cosensee/tailwind_renderer/double_bracket.rb +13 -0
  42. data/lib/cosensee/tailwind_renderer/empty_bracket.rb +11 -0
  43. data/lib/cosensee/tailwind_renderer/external_link_bracket.rb +15 -0
  44. data/lib/cosensee/tailwind_renderer/formula_bracket.rb +13 -0
  45. data/lib/cosensee/tailwind_renderer/hash_tag.rb +17 -0
  46. data/lib/cosensee/tailwind_renderer/icon_bracket.rb +14 -0
  47. data/lib/cosensee/tailwind_renderer/image_bracket.rb +15 -0
  48. data/lib/cosensee/tailwind_renderer/internal_link_bracket.rb +15 -0
  49. data/lib/cosensee/tailwind_renderer/link.rb +14 -0
  50. data/lib/cosensee/tailwind_renderer/page.rb +31 -0
  51. data/lib/cosensee/tailwind_renderer/parsed_line.rb +30 -0
  52. data/lib/cosensee/tailwind_renderer/quote.rb +14 -0
  53. data/lib/cosensee/tailwind_renderer/text_bracket.rb +12 -0
  54. data/lib/cosensee/tailwind_renderer.rb +36 -0
  55. data/lib/cosensee/text_bracket.rb +10 -0
  56. data/lib/cosensee/user.rb +37 -0
  57. data/lib/cosensee/version.rb +5 -0
  58. data/lib/cosensee.rb +54 -0
  59. data/sig/cosensee.rbs +4 -0
  60. data/templates/index.html.erb +39 -0
  61. data/templates/page.html.erb +59 -0
  62. metadata +130 -0
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ DecorateBracket = Data.define(:content) do
6
+ def render
7
+ classes = []
8
+ classes << font_sizes[content.font_size] if content.font_size
9
+ classes << 'font-semibold' if content.font_size && content.font_size > 0
10
+ classes << 'underline' if content.underlined
11
+ classes << 'italic' if content.slanted
12
+ classes << 'line-through' if content.deleted
13
+ class_attr = classes.join(' ')
14
+
15
+ %(<span class="#{class_attr}">#{content.text}</span>)
16
+ end
17
+
18
+ private
19
+
20
+ def font_sizes
21
+ %w[text-base text-lg text-xl text-2xl text-3xl text-4xl text-5xl text-6xl text-7xl text-8xl text-9xl].freeze
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ DoubleBracket = Data.define(:content) do
6
+ def render
7
+ rendered_content = Cosensee::TailwindRenderer.new(content: content.content).render
8
+
9
+ %(<span class="font-bold">#{rendered_content}</span>)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ EmptyBracket = Data.define(:content) do
6
+ def render
7
+ %(<span>[]</span>)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ ExternalLinkBracket = Data.define(:content) do
6
+ include HtmlEncodable
7
+
8
+ def render
9
+ link = content.link
10
+ anchor = content.anchor || content.link
11
+ %(<span><a href="#{link}" class="text-blue-500 hover:text-blue-700">#{escape_html(anchor)}</a></span>)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ FormulaBracket = Data.define(:content) do
6
+ include HtmlEncodable
7
+
8
+ def render
9
+ %(<span class="math-container">$#{escape_html(content.formula)}$</span>)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+
5
+ module Cosensee
6
+ class TailwindRenderer
7
+ HashTag = Data.define(:content) do
8
+ include LinkEncodable
9
+ include HtmlEncodable
10
+
11
+ def render
12
+ hash_tag = content.content
13
+ %(<span><a href="#{make_link(hash_tag)}" class="text-blue-500 hover:text-blue-700">##{escape_html(hash_tag)}</a></span>)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ IconBracket = Data.define(:content) do
6
+ include HtmlEncodable
7
+
8
+ def render
9
+ # XXX use icon image finder with project object
10
+ %(<span>[icon:#{escape_html(content.icon_name)}]</span>)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ ImageBracket = Data.define(:content) do
6
+ def render
7
+ if content.link
8
+ %(<span><a href="#{content.link}"><img src="#{content.src}" class="max-w-max max-h-80"></a></span>)
9
+ else
10
+ %(<span><img src="#{content.src}" class="max-w-max max-h-80"></span>)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+
5
+ module Cosensee
6
+ class TailwindRenderer
7
+ InternalLinkBracket = Data.define(:content) do
8
+ include HtmlEncodable
9
+
10
+ def render
11
+ %(<span><a href="#{content.link}" class="text-blue-500 hover:text-blue-700">#{escape_html(content.anchor)}</a></span>)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ Link = Data.define(:content) do
6
+ include HtmlEncodable
7
+
8
+ def render
9
+ link = content.content
10
+ %(<span><a href="#{escape_html(link)}" class="text-blue-500 hover:text-blue-700">#{escape_html(link)}</a></span>)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ Page = Data.define(:content) do
6
+ def render
7
+ current_block_builder = nil
8
+
9
+ page = content
10
+ rendered_lines = []
11
+
12
+ page.parsed_lines.each do |parsed_line|
13
+ if current_block_builder
14
+ if current_block_builder.continued_line?(parsed_line)
15
+ current_block_builder.append(parsed_line)
16
+ else
17
+ rendered_lines << current_block_builder.render
18
+ rendered_lines << ParsedLine.new(parsed_line).render
19
+ end
20
+ elsif parsed_line.codeblock?
21
+ current_block_builder = CodeblockBuilder.new(parsed_line)
22
+ else
23
+ rendered_lines << ParsedLine.new(parsed_line).render
24
+ end
25
+ end
26
+
27
+ rendered_lines.join
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ ParsedLine = Data.define(:content) do
6
+ include HtmlEncodable
7
+
8
+ def render
9
+ result = if content.line_content?
10
+ TailwindRenderer.new(content: content.line_content).render
11
+ else
12
+ content.content.map do |c|
13
+ if c.is_a?(String)
14
+ escape_html(c)
15
+ else
16
+ TailwindRenderer.new(content: c).render
17
+ end
18
+ end.join
19
+ end
20
+ level = content.indent_level * 2
21
+ result = '&nbsp;' if result == ''
22
+ if level > 0
23
+ %(<div class="relative pl-[#{level}rem]"><span class="absolute left-[#{level - 1}rem] top-1/2 -translate-y-1/2 w-1.5 h-1.5 rounded-full bg-gray-800"></span>#{result}</div>)
24
+ else
25
+ %(<div class="relative pl-[#{level}rem]">#{result}</div>)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Cosensee
6
+ class TailwindRenderer
7
+ Quote = Data.define(:content) do
8
+ def render
9
+ code = Cosensee::TailwindRenderer.new(content: content.content).render
10
+ %(<blockquote class="border-l-4 border-gray-300 bg-gray-100 px-4 text-gray-800">#{code}</blockquote>)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ class TailwindRenderer
5
+ TextBracket = Data.define(:content) do
6
+ def render
7
+ rendered = TailwindRenderer.new(content: content.content).render
8
+ %(<span>[#{rendered}]</span>)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ # convert into html
5
+ class TailwindRenderer
6
+ include HtmlEncodable
7
+
8
+ # content is Cosensee objects or an array of them
9
+ def initialize(content:)
10
+ @content = content
11
+ end
12
+
13
+ attr_reader :content
14
+
15
+ def render
16
+ if content.is_a?(Array)
17
+ content.map do |c|
18
+ if c.is_a?(String)
19
+ escape_html(c)
20
+ else
21
+ renderer_class(c).new(content: c).render
22
+ end
23
+ end.join
24
+ else
25
+ renderer_class(content).new(content:).render
26
+ end
27
+ end
28
+
29
+ # ex. Cosensee::TailwindRenderer::Code for Cosensee::Code
30
+ def renderer_class(content)
31
+ name = content.class.name.split('::').last
32
+
33
+ Cosensee::TailwindRenderer.const_get(name)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Cosensee
6
+ # for mixed content (!= single text)
7
+ TextBracket = Data.define(:content, :raw) do
8
+ include BracketSerializer
9
+ end
10
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Cosensee
6
+ # for User
7
+ User = Data.define(:id, :name, :display_name, :email) do
8
+ def self.from_array(users_args)
9
+ users_args.map { |args| new(**args) }
10
+ end
11
+
12
+ # allow both `:display_key` and `:displayKey`
13
+ def initialize(id:, name:, email:, **kwargs)
14
+ display_name = if kwargs.keys == [:display_name]
15
+ kwargs[:display_name]
16
+ elsif kwargs.keys == [:displayName]
17
+ kwargs[:displayName]
18
+ else
19
+ raise Cosensee::Error, 'Cosensee::User.new need an argument :display_name or :displayName'
20
+ end
21
+ super(
22
+ id:,
23
+ display_name:,
24
+ name:,
25
+ email:
26
+ )
27
+ end
28
+
29
+ def to_obj
30
+ { id:, name:, displayName: display_name, email: }
31
+ end
32
+
33
+ def to_json(*)
34
+ to_obj.to_json(*)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cosensee
4
+ VERSION = '0.6.0'
5
+ end
data/lib/cosensee.rb ADDED
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'cosensee/version'
4
+ require_relative 'cosensee/error'
5
+ require_relative 'cosensee/bracket_serializer'
6
+ require_relative 'cosensee/html_encodable'
7
+ require_relative 'cosensee/link_encodable'
8
+
9
+ require_relative 'cosensee/blank_bracket'
10
+ require_relative 'cosensee/bracket_parser'
11
+ require_relative 'cosensee/code'
12
+ require_relative 'cosensee/codeblock'
13
+ require_relative 'cosensee/command_line'
14
+ require_relative 'cosensee/decorate_bracket'
15
+ require_relative 'cosensee/double_bracket'
16
+ require_relative 'cosensee/empty_bracket'
17
+ require_relative 'cosensee/external_link_bracket'
18
+ require_relative 'cosensee/formula_bracket'
19
+ require_relative 'cosensee/hash_tag'
20
+ require_relative 'cosensee/html_builder'
21
+ require_relative 'cosensee/icon_bracket'
22
+ require_relative 'cosensee/image_bracket'
23
+ require_relative 'cosensee/indent'
24
+ require_relative 'cosensee/internal_link_bracket'
25
+ require_relative 'cosensee/line_parser'
26
+ require_relative 'cosensee/line'
27
+ require_relative 'cosensee/link'
28
+ require_relative 'cosensee/page'
29
+ require_relative 'cosensee/page_store'
30
+ require_relative 'cosensee/parsed_bracket'
31
+ require_relative 'cosensee/parsed_line'
32
+ require_relative 'cosensee/project'
33
+ require_relative 'cosensee/quote'
34
+ require_relative 'cosensee/tailwind_renderer'
35
+ require_relative 'cosensee/tailwind_renderer/blank_bracket'
36
+ require_relative 'cosensee/tailwind_renderer/code'
37
+ require_relative 'cosensee/tailwind_renderer/codeblock_builder'
38
+ require_relative 'cosensee/tailwind_renderer/command_line'
39
+ require_relative 'cosensee/tailwind_renderer/decorate_bracket'
40
+ require_relative 'cosensee/tailwind_renderer/double_bracket'
41
+ require_relative 'cosensee/tailwind_renderer/empty_bracket'
42
+ require_relative 'cosensee/tailwind_renderer/external_link_bracket'
43
+ require_relative 'cosensee/tailwind_renderer/formula_bracket'
44
+ require_relative 'cosensee/tailwind_renderer/hash_tag'
45
+ require_relative 'cosensee/tailwind_renderer/icon_bracket'
46
+ require_relative 'cosensee/tailwind_renderer/image_bracket'
47
+ require_relative 'cosensee/tailwind_renderer/internal_link_bracket'
48
+ require_relative 'cosensee/tailwind_renderer/link'
49
+ require_relative 'cosensee/tailwind_renderer/page'
50
+ require_relative 'cosensee/tailwind_renderer/parsed_line'
51
+ require_relative 'cosensee/tailwind_renderer/quote'
52
+ require_relative 'cosensee/tailwind_renderer/text_bracket'
53
+ require_relative 'cosensee/text_bracket'
54
+ require_relative 'cosensee/user'
data/sig/cosensee.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Cosensee
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
@@ -0,0 +1,39 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8"/>
5
+ <meta name="referrer" content="same-origin"/>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0"/>
7
+ <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
8
+ <title><%= project.display_name %></title>
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <style>
11
+ p.pagetitle {
12
+ display: -webkit-box;
13
+ -webkit-line-clamp: 3;
14
+ -webkit-box-orient: vertical;
15
+ }
16
+ </style>
17
+ </head>
18
+ <body class="bg-gray-100 p-4">
19
+ <div class="max-w-screen-xl mx-auto">
20
+ <h1 class="text-xl mb-4"><%= project.display_name %> ページ一覧</h1>
21
+ <div class="grid grid-cols-8 gap-4">
22
+ <% project.pages.each do |page|%>
23
+ <div class="bg-white shadow-md rounded-md aspect-square flex items-start justify-center p-2 overflow-hidden">
24
+ <div class="break-words text-xs w-full">
25
+ <a href="<%= page.link_path %>">
26
+ <p class="pagetitle font-bold overflow-hidden"><%= page.title %></p>
27
+ </a>
28
+ <a href="<%= page.link_path %>">
29
+ <% page.body_lines.each do |line| %>
30
+ <p class="inline text-xs"><%= line.to_s %></p>
31
+ <% end %>
32
+ </a>
33
+ </div>
34
+ </div>
35
+ <% end %>
36
+ </div>
37
+ </div>
38
+ </body>
39
+ </html>
@@ -0,0 +1,59 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8"/>
5
+ <meta name="referrer" content="same-origin"/>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0"/>
7
+ <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
8
+ <meta name="format-detection" content="email=no,telephone=no,address=no,date=no"/>
9
+ <title><%= title %></title>
10
+ <script src="https://cdn.tailwindcss.com"></script>
11
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.18/dist/katex.min.css" integrity="sha384-veTAhWILPOotXm+kbR5uY7dRamYLJf58I7P+hJhjeuc7hsMAkJHTsPahAl0hBST0" crossorigin="anonymous">
12
+ <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.18/dist/katex.min.js" integrity="sha384-v6mkHYHfY/4BWq54f7lQAdtIsoZZIByznQ3ZqN38OL4KCsrxo31SLlPiak7cj/Mg" crossorigin="anonymous"></script>
13
+ <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.18/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous"></script>
14
+
15
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600,600i,700,700i|Roboto:400,400i,500,500i,700,700i"/>
16
+ <style>
17
+ p.pagetitle {
18
+ display: -webkit-box;
19
+ -webkit-line-clamp: 3;
20
+ -webkit-box-orient: vertical;
21
+ }
22
+ </style>
23
+ </head>
24
+ <body class="bg-slate-100">
25
+ <div class="max-w-screen-lg mx-auto p-4 m-4">
26
+ <nav>
27
+ <a href="/"><%= project.name %></a>
28
+ </nav>
29
+ <div class="max-w-screen bg-white">
30
+ <h1 class="text-3xl py-4 my-4"><%= title %></h1>
31
+ <div>
32
+ <%= page&.to_html %>
33
+ </div>
34
+ </div>
35
+
36
+ <div class="grid grid-cols-6 gap-2 py-8">
37
+ <div class="bg-blue-400 shadow-md rounded-md aspect-square flex items-center justify-center p-2 overflow-hidden">
38
+ <div class="text-lg text-center text-gray-100">
39
+ Links<br>🔗
40
+ </div>
41
+ </div>
42
+ <% project.page_store.find_link_pages_by_title(title).each do |page|%>
43
+ <div class="bg-white shadow-md rounded-md aspect-square flex items-start justify-center p-2 overflow-hidden">
44
+ <div class="break-words text-xs w-full">
45
+ <a href="<%= page.link_path %>">
46
+ <p class="pagetitle font-bold overflow-hidden"><%= page.title %></p>
47
+ </a>
48
+ <a href="<%= page.link_path %>">
49
+ <% page.body_lines.each do |line| %>
50
+ <p class="inline text-xs"><%= line.to_s %></p>
51
+ <% end %>
52
+ </a>
53
+ </div>
54
+ </div>
55
+ <% end %>
56
+ </div>
57
+ </div>
58
+ </body>
59
+ </html>
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cosensee
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
+ platform: ruby
6
+ authors:
7
+ - takahashim
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2025-01-05 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: erubi
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: tilt
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ description: Cosense (Scrapbox) parser and renderer
41
+ email:
42
+ - takahashimm@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - ".rspec"
48
+ - ".rubocop.yml"
49
+ - ".rubocop_todo.yml"
50
+ - README.md
51
+ - Rakefile
52
+ - lib/cosensee.rb
53
+ - lib/cosensee/blank_bracket.rb
54
+ - lib/cosensee/bracket_parser.rb
55
+ - lib/cosensee/bracket_serializer.rb
56
+ - lib/cosensee/code.rb
57
+ - lib/cosensee/codeblock.rb
58
+ - lib/cosensee/command_line.rb
59
+ - lib/cosensee/decorate_bracket.rb
60
+ - lib/cosensee/double_bracket.rb
61
+ - lib/cosensee/empty_bracket.rb
62
+ - lib/cosensee/error.rb
63
+ - lib/cosensee/external_link_bracket.rb
64
+ - lib/cosensee/formula_bracket.rb
65
+ - lib/cosensee/hash_tag.rb
66
+ - lib/cosensee/html_builder.rb
67
+ - lib/cosensee/html_encodable.rb
68
+ - lib/cosensee/icon_bracket.rb
69
+ - lib/cosensee/image_bracket.rb
70
+ - lib/cosensee/indent.rb
71
+ - lib/cosensee/internal_link_bracket.rb
72
+ - lib/cosensee/line.rb
73
+ - lib/cosensee/line_parser.rb
74
+ - lib/cosensee/link.rb
75
+ - lib/cosensee/link_encodable.rb
76
+ - lib/cosensee/page.rb
77
+ - lib/cosensee/page_store.rb
78
+ - lib/cosensee/parsed_bracket.rb
79
+ - lib/cosensee/parsed_line.rb
80
+ - lib/cosensee/project.rb
81
+ - lib/cosensee/quote.rb
82
+ - lib/cosensee/tailwind_renderer.rb
83
+ - lib/cosensee/tailwind_renderer/blank_bracket.rb
84
+ - lib/cosensee/tailwind_renderer/code.rb
85
+ - lib/cosensee/tailwind_renderer/codeblock_builder.rb
86
+ - lib/cosensee/tailwind_renderer/command_line.rb
87
+ - lib/cosensee/tailwind_renderer/decorate_bracket.rb
88
+ - lib/cosensee/tailwind_renderer/double_bracket.rb
89
+ - lib/cosensee/tailwind_renderer/empty_bracket.rb
90
+ - lib/cosensee/tailwind_renderer/external_link_bracket.rb
91
+ - lib/cosensee/tailwind_renderer/formula_bracket.rb
92
+ - lib/cosensee/tailwind_renderer/hash_tag.rb
93
+ - lib/cosensee/tailwind_renderer/icon_bracket.rb
94
+ - lib/cosensee/tailwind_renderer/image_bracket.rb
95
+ - lib/cosensee/tailwind_renderer/internal_link_bracket.rb
96
+ - lib/cosensee/tailwind_renderer/link.rb
97
+ - lib/cosensee/tailwind_renderer/page.rb
98
+ - lib/cosensee/tailwind_renderer/parsed_line.rb
99
+ - lib/cosensee/tailwind_renderer/quote.rb
100
+ - lib/cosensee/tailwind_renderer/text_bracket.rb
101
+ - lib/cosensee/text_bracket.rb
102
+ - lib/cosensee/user.rb
103
+ - lib/cosensee/version.rb
104
+ - sig/cosensee.rbs
105
+ - templates/index.html.erb
106
+ - templates/page.html.erb
107
+ homepage: https://github.com/takahashim/cosensee
108
+ licenses: []
109
+ metadata:
110
+ homepage_uri: https://github.com/takahashim/cosensee
111
+ source_code_uri: https://github.com/takahashim/cosensee
112
+ rubygems_mfa_required: 'true'
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 3.4.1
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubygems_version: 3.6.2
128
+ specification_version: 4
129
+ summary: Cosense (Scrapbox) parser and renderer
130
+ test_files: []