jekyll-obsidian-site 0.2.0
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 +7 -0
- data/LICENSE +21 -0
- data/README.md +133 -0
- data/website/_config.yml +21 -0
- data/website/_includes/website/archive-timeline.html +8 -0
- data/website/_includes/website/blog-ledger.html +19 -0
- data/website/_includes/website/blog-navigation.html +7 -0
- data/website/_includes/website/comments.html +22 -0
- data/website/_includes/website/contact-icon.html +14 -0
- data/website/_includes/website/context-tags.html +7 -0
- data/website/_includes/website/context.html +3 -0
- data/website/_includes/website/dialogs.html +71 -0
- data/website/_includes/website/docs-navigation.html +7 -0
- data/website/_includes/website/docs-tree.html +8 -0
- data/website/_includes/website/footer.html +14 -0
- data/website/_includes/website/github-icon.html +3 -0
- data/website/_includes/website/head.html +41 -0
- data/website/_includes/website/header.html +35 -0
- data/website/_includes/website/language-switcher.html +16 -0
- data/website/_includes/website/local-graph.html +25 -0
- data/website/_includes/website/note-header.html +35 -0
- data/website/_includes/website/outline.html +9 -0
- data/website/_includes/website/page-actions.html +34 -0
- data/website/_includes/website/portfolio-grid.html +36 -0
- data/website/_includes/website/portfolio-topics.html +4 -0
- data/website/_includes/website/post-cards.html +16 -0
- data/website/_includes/website/related-articles.html +7 -0
- data/website/_includes/website/relations.html +16 -0
- data/website/_includes/website/source-actions.html +28 -0
- data/website/_includes/website/system-page.html +31 -0
- data/website/_includes/website/tab-collection.html +28 -0
- data/website/_includes/website/tag-filter.html +12 -0
- data/website/_layouts/website-docs.html +20 -0
- data/website/_layouts/website-minimal.html +93 -0
- data/website/_layouts/website-redirect.html +17 -0
- data/website/assets/chunks/abnfDiagram-N423BO3Z-TSORAEI2.js +1 -0
- data/website/assets/chunks/architecture-TIHT7OUA-OUC5PEC7.js +1 -0
- data/website/assets/chunks/architectureDiagram-T3A2C74G-6P5MB2DJ.js +36 -0
- data/website/assets/chunks/blockDiagram-VBNYF7ZC-ZWINYROZ.js +132 -0
- data/website/assets/chunks/c4Diagram-5PPSVZJV-R5RMEAOT.js +10 -0
- data/website/assets/chunks/chunk-22DRK7VS.js +1 -0
- data/website/assets/chunks/chunk-25REBZ7M.js +2 -0
- data/website/assets/chunks/chunk-2RQCUDTG.js +1 -0
- data/website/assets/chunks/chunk-34FHPXU4.js +1 -0
- data/website/assets/chunks/chunk-57XXJOQN.js +10 -0
- data/website/assets/chunks/chunk-6DCNDVBX.js +2 -0
- data/website/assets/chunks/chunk-6DHFEWGX.js +1 -0
- data/website/assets/chunks/chunk-6VQ47JJS.js +2 -0
- data/website/assets/chunks/chunk-7CSIRG7W.js +127 -0
- data/website/assets/chunks/chunk-A43YELH5.js +1 -0
- data/website/assets/chunks/chunk-AIX6IH4O.js +1 -0
- data/website/assets/chunks/chunk-B3K7RH5O.js +88 -0
- data/website/assets/chunks/chunk-CBGUD2NP.js +1 -0
- data/website/assets/chunks/chunk-D3WOCELE.js +1 -0
- data/website/assets/chunks/chunk-D6FURU6X.js +1 -0
- data/website/assets/chunks/chunk-DGEGT77F.js +1 -0
- data/website/assets/chunks/chunk-DN52R6U7.js +1 -0
- data/website/assets/chunks/chunk-E3T3IFAC.js +1 -0
- data/website/assets/chunks/chunk-EIBFAW37.js +1 -0
- data/website/assets/chunks/chunk-ERWOH47R.js +1 -0
- data/website/assets/chunks/chunk-ETOVTYWF.js +1 -0
- data/website/assets/chunks/chunk-GHD3PFWA.js +231 -0
- data/website/assets/chunks/chunk-GMBKQ7NZ.js +1 -0
- data/website/assets/chunks/chunk-GQM25EPP.js +156 -0
- data/website/assets/chunks/chunk-GSOU4UTT.js +1 -0
- data/website/assets/chunks/chunk-HEMELP7J.js +1 -0
- data/website/assets/chunks/chunk-HZ5I5NJO.js +1 -0
- data/website/assets/chunks/chunk-IP56FOSI.js +70 -0
- data/website/assets/chunks/chunk-L7BMR7WL.js +1 -0
- data/website/assets/chunks/chunk-LGUG3SQB.js +1 -0
- data/website/assets/chunks/chunk-LOMHZYS2.js +1 -0
- data/website/assets/chunks/chunk-MII4VZEB.js +3 -0
- data/website/assets/chunks/chunk-MYMJLHQL.js +62 -0
- data/website/assets/chunks/chunk-NBH7YOBD.js +15 -0
- data/website/assets/chunks/chunk-NCOVM3YF.js +1 -0
- data/website/assets/chunks/chunk-OAGTSILX.js +1 -0
- data/website/assets/chunks/chunk-OCX5OCIU.js +321 -0
- data/website/assets/chunks/chunk-OE3NOVIH.js +1 -0
- data/website/assets/chunks/chunk-PLP5XUTJ.js +1 -0
- data/website/assets/chunks/chunk-PNOERP6G.js +1 -0
- data/website/assets/chunks/chunk-QBPQ7DPE.js +1 -0
- data/website/assets/chunks/chunk-RWFFDL53.js +1 -0
- data/website/assets/chunks/chunk-SEGIW3MP.js +1 -0
- data/website/assets/chunks/chunk-SZDMZNUS.js +1 -0
- data/website/assets/chunks/chunk-T2QBAPVT.js +1 -0
- data/website/assets/chunks/chunk-UE533OZ7.js +1 -0
- data/website/assets/chunks/chunk-UTWOJE2A.js +1 -0
- data/website/assets/chunks/chunk-VOCDYA3H.js +1 -0
- data/website/assets/chunks/chunk-VYZZPKGK.js +161 -0
- data/website/assets/chunks/chunk-WWLZIRS6.js +1 -0
- data/website/assets/chunks/chunk-XNXYDBKX.js +32 -0
- data/website/assets/chunks/chunk-XQUIO562.js +1 -0
- data/website/assets/chunks/chunk-Y2XVFW7T.js +2 -0
- data/website/assets/chunks/chunk-YORIST7Z.js +1 -0
- data/website/assets/chunks/chunk-Z2WBQPVY.js +206 -0
- data/website/assets/chunks/classDiagram-JCYQIIEL-OFDVDDIM.js +1 -0
- data/website/assets/chunks/classDiagram-v2-OCEON4UE-E36B6BGQ.js +1 -0
- data/website/assets/chunks/cose-bilkent-JH36ORCC-CBAW64AB.js +1 -0
- data/website/assets/chunks/cynefin-VYW2F7L2-CBO6DLNV.js +1 -0
- data/website/assets/chunks/cynefinDiagram-MW4NZA55-DFINLOUY.js +62 -0
- data/website/assets/chunks/dagre-VZM6K2ZE-BZFBSZAH.js +4 -0
- data/website/assets/chunks/diagram-7IWD3JNH-XQHTVOU2.js +30 -0
- data/website/assets/chunks/diagram-B4RE2ZJO-FTSXBZJR.js +3 -0
- data/website/assets/chunks/diagram-LBJQPF4R-ZSZW4OLH.js +24 -0
- data/website/assets/chunks/diagram-Q27KOJAE-2IV5TVCJ.js +24 -0
- data/website/assets/chunks/diagram-UB23O5K3-D6PDUTFL.js +41 -0
- data/website/assets/chunks/ebnfDiagram-BXEA7PRR-C6MAER3M.js +1 -0
- data/website/assets/chunks/erDiagram-JOGREHBK-EDAD2H5M.js +85 -0
- data/website/assets/chunks/eventmodeling-45OFAUF4-4K577DMF.js +1 -0
- data/website/assets/chunks/flowDiagram-UKHOOZJN-545F4YX3.js +1 -0
- data/website/assets/chunks/ganttDiagram-PKOTCBZU-7A7EKMY3.js +292 -0
- data/website/assets/chunks/gitGraph-TEB2WS4Q-3WUB7WYQ.js +1 -0
- data/website/assets/chunks/gitGraphDiagram-DS77QQ5N-A5UWV5FF.js +106 -0
- data/website/assets/chunks/info-DKCQHKI2-EOOHI7XS.js +1 -0
- data/website/assets/chunks/infoDiagram-6WML65LV-CWIOOWJP.js +2 -0
- data/website/assets/chunks/ishikawaDiagram-WSZJBQD7-CEASQVDL.js +70 -0
- data/website/assets/chunks/journeyDiagram-NVQOT4AX-LYG3S2AW.js +139 -0
- data/website/assets/chunks/kanban-definition-27J2QSJJ-HCC6KAYI.js +89 -0
- data/website/assets/chunks/katex-F4MQ6FB3.js +257 -0
- data/website/assets/chunks/mindmap-definition-FAOFIHXS-JMGSM3RE.js +96 -0
- data/website/assets/chunks/packet-7NZHBO7P-W3SJA3MY.js +1 -0
- data/website/assets/chunks/pegDiagram-VL7TDLO6-4JO3Y3Z3.js +1 -0
- data/website/assets/chunks/pie-RZYD4A2V-YOIQBTY7.js +1 -0
- data/website/assets/chunks/pieDiagram-7S7Q4E2Y-VFQ7SE46.js +39 -0
- data/website/assets/chunks/quadrantDiagram-CIZ2JOQS-JISDI2S6.js +7 -0
- data/website/assets/chunks/radar-I7S5WNFK-NMKP5AZO.js +1 -0
- data/website/assets/chunks/railroad-3IZDKUUU-7MOIV7CI.js +1 -0
- data/website/assets/chunks/railroad-abnf-AHOZXSZD-HXNH5SLO.js +1 -0
- data/website/assets/chunks/railroad-ebnf-EBAXGLYW-OWDJEWMK.js +1 -0
- data/website/assets/chunks/railroad-peg-LSFZ7HO6-ASSINGP5.js +1 -0
- data/website/assets/chunks/railroadDiagram-AXF67PYL-AFV5VP5F.js +1 -0
- data/website/assets/chunks/requirementDiagram-LRYGKXZP-RNRPEHHN.js +84 -0
- data/website/assets/chunks/sankeyDiagram-W5VNT64P-O54R2L3E.js +40 -0
- data/website/assets/chunks/sequenceDiagram-SI44F4Z6-42WISKJ7.js +162 -0
- data/website/assets/chunks/sizeCapture-X5ZJPWSS-LRN2Q37T.js +1 -0
- data/website/assets/chunks/stateDiagram-OKZ733FA-BWIBJXIR.js +1 -0
- data/website/assets/chunks/stateDiagram-v2-UEYNNEHI-L73LHL3L.js +1 -0
- data/website/assets/chunks/swimlanes-SLNWSIFB-ECOAE7LQ.js +1 -0
- data/website/assets/chunks/swimlanesDiagram-ULZ7WXOC-3CKKKFZZ.js +8 -0
- data/website/assets/chunks/timeline-definition-Z64GVDOM-HR2OL5G7.js +120 -0
- data/website/assets/chunks/treeView-QDETBFTQ-C6D5WFJA.js +1 -0
- data/website/assets/chunks/treemap-6X3UGDF4-JFCDMSCA.js +1 -0
- data/website/assets/chunks/vennDiagram-T6HMQDX7-62WAAPTF.js +34 -0
- data/website/assets/chunks/wardley-OPB4EBWU-RQIOII7I.js +1 -0
- data/website/assets/chunks/wardleyDiagram-T6FBY63Y-KUXO3NHV.js +78 -0
- data/website/assets/chunks/xychartDiagram-ELKLHX3M-I54W4HJ7.js +7 -0
- data/website/assets/color-scheme-bootstrap-4H4ZR4BW.js +1 -0
- data/website/assets/docs-3WBBQT6K.css +1 -0
- data/website/assets/docs-W3D5DWQF.js +1 -0
- data/website/assets/docs-navigation-75ALFYBA.js +1 -0
- data/website/assets/graph-QWL54LWD.js +1 -0
- data/website/assets/manifest.json +314 -0
- data/website/assets/math-7JTH4OWZ.js +21 -0
- data/website/assets/mermaid-RXC6URG4.js +10 -0
- data/website/assets/minimal-3NPTDWQX.js +1 -0
- data/website/assets/minimal-E2VATXXS.css +1 -0
- data/website/assets/previews-FMHOX7UX.js +1 -0
- data/website/assets/search-BH73JZDU.js +1 -0
- data/website/assets/search-worker-SM4IM4J7.js +1 -0
- data/website/exe/jekyll-obsidian +5 -0
- data/website/lib/jekyll_obsidian/adapter.rb +733 -0
- data/website/lib/jekyll_obsidian/built_in_themes.rb +855 -0
- data/website/lib/jekyll_obsidian/cli.rb +84 -0
- data/website/lib/jekyll_obsidian/content_policy.rb +194 -0
- data/website/lib/jekyll_obsidian/destination_registry.rb +39 -0
- data/website/lib/jekyll_obsidian/directory_indexes.rb +30 -0
- data/website/lib/jekyll_obsidian/external_media.rb +371 -0
- data/website/lib/jekyll_obsidian/front_matter.rb +453 -0
- data/website/lib/jekyll_obsidian/github_markdown.rb +664 -0
- data/website/lib/jekyll_obsidian/html_publication.rb +206 -0
- data/website/lib/jekyll_obsidian/initializer.rb +68 -0
- data/website/lib/jekyll_obsidian/localized_compiler.rb +1044 -0
- data/website/lib/jekyll_obsidian/media_policy.rb +41 -0
- data/website/lib/jekyll_obsidian/ofm_scanner.rb +493 -0
- data/website/lib/jekyll_obsidian/output_text.rb +13 -0
- data/website/lib/jekyll_obsidian/preview.rb +93 -0
- data/website/lib/jekyll_obsidian/published_markdown.rb +32 -0
- data/website/lib/jekyll_obsidian/raw_html_manifest.rb +66 -0
- data/website/lib/jekyll_obsidian/runtime.rb +197 -0
- data/website/lib/jekyll_obsidian/site_compilation.rb +147 -0
- data/website/lib/jekyll_obsidian/site_navigation.rb +517 -0
- data/website/lib/jekyll_obsidian/url_builder.rb +163 -0
- data/website/lib/jekyll_obsidian/value_objects.rb +198 -0
- data/website/lib/jekyll_obsidian/vault_compiler.rb +2771 -0
- data/website/lib/jekyll_obsidian/version.rb +6 -0
- data/website/lib/jekyll_obsidian/workspace_layout.rb +104 -0
- data/website/lib/jekyll_obsidian.rb +22 -0
- data/website/scripts/audit-site.rb +120 -0
- data/website/scripts/templates/pages.yml +55 -0
- data/website/scripts/verify-site-urls.rb +585 -0
- metadata +319 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JekyllObsidian
|
|
4
|
+
module DeepFreeze
|
|
5
|
+
module_function
|
|
6
|
+
|
|
7
|
+
def call(value, seen = {})
|
|
8
|
+
return value if value.nil? || value == true || value == false || value.is_a?(Numeric) || value.is_a?(Symbol)
|
|
9
|
+
return value if seen[value.object_id]
|
|
10
|
+
|
|
11
|
+
seen[value.object_id] = true
|
|
12
|
+
case value
|
|
13
|
+
when String
|
|
14
|
+
value.freeze
|
|
15
|
+
when Array
|
|
16
|
+
value.each { |item| call(item, seen) }
|
|
17
|
+
value.freeze
|
|
18
|
+
when Hash
|
|
19
|
+
value.each { |key, item| call(key, seen); call(item, seen) }
|
|
20
|
+
value.freeze
|
|
21
|
+
when Struct
|
|
22
|
+
value.each { |item| call(item, seen) }
|
|
23
|
+
value.freeze
|
|
24
|
+
else
|
|
25
|
+
value.freeze
|
|
26
|
+
end
|
|
27
|
+
value
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
module ImmutableRecord
|
|
32
|
+
class << self
|
|
33
|
+
def define(*members)
|
|
34
|
+
Class.new(Data.define(*members)) do
|
|
35
|
+
define_method(:initialize) do |**values|
|
|
36
|
+
unknown = values.keys - members
|
|
37
|
+
raise ArgumentError, "unknown keywords: #{unknown.join(', ')}" unless unknown.empty?
|
|
38
|
+
|
|
39
|
+
attributes = members.to_h { |member| [member, values.fetch(member, nil)] }
|
|
40
|
+
attributes.each_value { |value| JekyllObsidian::DeepFreeze.call(value) }
|
|
41
|
+
super(**attributes)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
SnapshotEntry = ImmutableRecord.define(
|
|
49
|
+
:path,
|
|
50
|
+
:bytes,
|
|
51
|
+
:kind,
|
|
52
|
+
:media_type,
|
|
53
|
+
:size,
|
|
54
|
+
:device,
|
|
55
|
+
:inode,
|
|
56
|
+
:mtime_ns,
|
|
57
|
+
:first_committed_at,
|
|
58
|
+
:external_document
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
Snapshot = ImmutableRecord.define(:entries)
|
|
62
|
+
|
|
63
|
+
BuildConfig = ImmutableRecord.define(
|
|
64
|
+
:title,
|
|
65
|
+
:description,
|
|
66
|
+
:lang,
|
|
67
|
+
:url,
|
|
68
|
+
:baseurl,
|
|
69
|
+
:source,
|
|
70
|
+
:syntax_profile,
|
|
71
|
+
:repository,
|
|
72
|
+
:edit_branch,
|
|
73
|
+
:environment,
|
|
74
|
+
:theme,
|
|
75
|
+
:content,
|
|
76
|
+
:features,
|
|
77
|
+
:i18n,
|
|
78
|
+
:comments,
|
|
79
|
+
:analytics,
|
|
80
|
+
:contacts,
|
|
81
|
+
:navigation,
|
|
82
|
+
:html
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
BuildRequest = ImmutableRecord.define(:snapshot, :config, :tab_memberships)
|
|
86
|
+
SourceSpan = ImmutableRecord.define(:start_line, :start_column, :end_line, :end_column)
|
|
87
|
+
FrontMatterLink = ImmutableRecord.define(:property, :index, :target, :display, :source_span)
|
|
88
|
+
Diagnostic = ImmutableRecord.define(:severity, :code, :message, :path, :span, :property)
|
|
89
|
+
Relation = ImmutableRecord.define(:source_id, :target_id, :kind, :fragment, :source_span, :property)
|
|
90
|
+
PageOutput = ImmutableRecord.define(:route, :content, :data)
|
|
91
|
+
GeneratedFile = ImmutableRecord.define(:route, :content, :media_type)
|
|
92
|
+
ProjectedFile = ImmutableRecord.define(:source_path, :route, :media_type, :size, :device, :inode, :mtime_ns)
|
|
93
|
+
NoteOutput = ImmutableRecord.define(:id, :title, :route, :properties)
|
|
94
|
+
ContentSecurityNeeds = ImmutableRecord.define(:media_sources, :frame_sources, :script_sources, :connect_sources)
|
|
95
|
+
|
|
96
|
+
# Internal, immutable hand-off between the OFM compiler and the built-in
|
|
97
|
+
# theme presenters. Keeping rendered note content and all relation-derived
|
|
98
|
+
# cards here prevents presentation code from reaching back into MutableNote
|
|
99
|
+
# or repeating Markdown/relation work.
|
|
100
|
+
PublishedNote = ImmutableRecord.define(
|
|
101
|
+
:id,
|
|
102
|
+
:title,
|
|
103
|
+
:route,
|
|
104
|
+
:content,
|
|
105
|
+
:properties,
|
|
106
|
+
:markdown_source,
|
|
107
|
+
:authored_text,
|
|
108
|
+
:preview,
|
|
109
|
+
:outline,
|
|
110
|
+
:updated,
|
|
111
|
+
:created,
|
|
112
|
+
:content_type,
|
|
113
|
+
:published_at,
|
|
114
|
+
:nav_order,
|
|
115
|
+
:nav_exclude,
|
|
116
|
+
:directory_index,
|
|
117
|
+
:has_h1,
|
|
118
|
+
:feature_flags,
|
|
119
|
+
:content_security,
|
|
120
|
+
:image_url,
|
|
121
|
+
:source_links,
|
|
122
|
+
:topics,
|
|
123
|
+
:related,
|
|
124
|
+
:links,
|
|
125
|
+
:backlinks,
|
|
126
|
+
:embedded_by
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
PublishedSiteModel = ImmutableRecord.define(
|
|
130
|
+
:notes,
|
|
131
|
+
:notes_by_id,
|
|
132
|
+
:directory_index_paths,
|
|
133
|
+
:relations,
|
|
134
|
+
:graph_edges,
|
|
135
|
+
:graph_degrees
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
CommentsConfig = ImmutableRecord.define(
|
|
139
|
+
:enabled,
|
|
140
|
+
:configured,
|
|
141
|
+
:repository,
|
|
142
|
+
:repository_id,
|
|
143
|
+
:category,
|
|
144
|
+
:category_id,
|
|
145
|
+
:language,
|
|
146
|
+
:load
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
AnalyticsConfig = ImmutableRecord.define(:provider, :identifier, :load)
|
|
150
|
+
|
|
151
|
+
EffectiveThemeConfig = ImmutableRecord.define(
|
|
152
|
+
:theme,
|
|
153
|
+
:features,
|
|
154
|
+
:content,
|
|
155
|
+
:comments,
|
|
156
|
+
:analytics,
|
|
157
|
+
:contacts,
|
|
158
|
+
:navigation,
|
|
159
|
+
:site,
|
|
160
|
+
:url_builder
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
ThemeOutput = ImmutableRecord.define(
|
|
164
|
+
:pages,
|
|
165
|
+
:artifacts,
|
|
166
|
+
:shared_files,
|
|
167
|
+
:site_data,
|
|
168
|
+
:feed_note_ids,
|
|
169
|
+
:reserved_namespaces
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
BuildSuccessBase = ImmutableRecord.define(
|
|
173
|
+
:pages,
|
|
174
|
+
:generated_files,
|
|
175
|
+
:projected_files,
|
|
176
|
+
:diagnostics,
|
|
177
|
+
:relations,
|
|
178
|
+
:notes,
|
|
179
|
+
:theme,
|
|
180
|
+
:features,
|
|
181
|
+
:site_data,
|
|
182
|
+
:github_markdown_manifest
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
class BuildSuccess < BuildSuccessBase
|
|
186
|
+
def success?
|
|
187
|
+
true
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
BuildFailureBase = ImmutableRecord.define(:diagnostics)
|
|
192
|
+
|
|
193
|
+
class BuildFailure < BuildFailureBase
|
|
194
|
+
def success?
|
|
195
|
+
false
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|