metanorma-m3d 1.0.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.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +15 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +25 -0
  7. data/README.adoc +170 -0
  8. data/Rakefile +6 -0
  9. data/asciidoctor-m3d.gemspec.old +54 -0
  10. data/bin/console +14 -0
  11. data/bin/rspec +18 -0
  12. data/bin/setup +8 -0
  13. data/lib/asciidoctor-m3d.rb +10 -0
  14. data/lib/asciidoctor/m3d.rb +7 -0
  15. data/lib/asciidoctor/m3d/biblio.rng +836 -0
  16. data/lib/asciidoctor/m3d/converter.rb +188 -0
  17. data/lib/asciidoctor/m3d/html/dots-w@2x.png +0 -0
  18. data/lib/asciidoctor/m3d/html/dots@2x.png +0 -0
  19. data/lib/asciidoctor/m3d/html/header.html +184 -0
  20. data/lib/asciidoctor/m3d/html/html_m3d_intro.html +8 -0
  21. data/lib/asciidoctor/m3d/html/html_m3d_titlepage.html +95 -0
  22. data/lib/asciidoctor/m3d/html/htmlstyle.scss +797 -0
  23. data/lib/asciidoctor/m3d/html/m3d.scss +549 -0
  24. data/lib/asciidoctor/m3d/html/scripts.html +68 -0
  25. data/lib/asciidoctor/m3d/isodoc.rng +1059 -0
  26. data/lib/asciidoctor/m3d/isostandard.rng +1001 -0
  27. data/lib/asciidoctor/m3d/m3d.rng +154 -0
  28. data/lib/asciidoctor/m3d/version.rb +5 -0
  29. data/lib/isodoc/m3d/html/dots-w@2x.png +0 -0
  30. data/lib/isodoc/m3d/html/dots@2x.png +0 -0
  31. data/lib/isodoc/m3d/html/header.html +219 -0
  32. data/lib/isodoc/m3d/html/html_m3d_intro.html +14 -0
  33. data/lib/isodoc/m3d/html/html_m3d_titlepage.html +102 -0
  34. data/lib/isodoc/m3d/html/htmlstyle.scss +1001 -0
  35. data/lib/isodoc/m3d/html/logo.jpg +0 -0
  36. data/lib/isodoc/m3d/html/m3-logo.png +0 -0
  37. data/lib/isodoc/m3d/html/m3d.scss +697 -0
  38. data/lib/isodoc/m3d/html/scripts.html +82 -0
  39. data/lib/isodoc/m3d/html/word_m3d_intro.html +10 -0
  40. data/lib/isodoc/m3d/html/word_m3d_titlepage.html +58 -0
  41. data/lib/isodoc/m3d/html/wordstyle.scss +1003 -0
  42. data/lib/isodoc/m3d/m3dhtmlconvert.rb +154 -0
  43. data/lib/isodoc/m3d/m3dhtmlrender.rb +68 -0
  44. data/lib/isodoc/m3d/m3dwordconvert.rb +105 -0
  45. data/lib/isodoc/m3d/m3wordrender.rb +68 -0
  46. data/lib/isodoc/m3d/metadata.rb +87 -0
  47. data/lib/metanorma/m3d.rb +7 -0
  48. data/lib/metanorma/m3d/processor.rb +41 -0
  49. data/metanorma-m3d.gemspec +55 -0
  50. metadata +419 -0
@@ -0,0 +1,188 @@
1
+ require "asciidoctor"
2
+ require "asciidoctor/m3d/version"
3
+ require "isodoc/m3d/m3dhtmlconvert"
4
+ require "isodoc/m3d/m3dwordconvert"
5
+ require "asciidoctor/standoc/converter"
6
+
7
+ module Asciidoctor
8
+ module M3d
9
+ M3D_NAMESPACE = "https://open.ribose.com/standards/m3d"
10
+
11
+ # A {Converter} implementation that generates M3D output, and a document
12
+ # schema encapsulation of the document for validation
13
+ class Converter < Standoc::Converter
14
+
15
+ register_for "m3d"
16
+
17
+ def metadata(node, xml)
18
+ title node, xml
19
+ metadata_source(node, xml)
20
+ metadata_id(node, xml)
21
+ metadata_author(node, xml)
22
+ metadata_publisher(node, xml)
23
+ xml.language node.attr("language")
24
+ xml.script (node.attr("script") || "Latn")
25
+ metadata_status(node, xml)
26
+ metadata_copyright(node, xml)
27
+ metadata_committee(node, xml)
28
+ metadata_ics(node, xml)
29
+ end
30
+
31
+ def metadata_source(node, xml)
32
+ return unless node.attr("url")
33
+ xml.source node.attr("url")
34
+ end
35
+
36
+ def metadata_author(node, xml)
37
+ xml.contributor do |c|
38
+ c.role **{ type: "author" }
39
+ c.organization do |a|
40
+ a.name "Ribose"
41
+ end
42
+ end
43
+ end
44
+
45
+ def metadata_publisher(node, xml)
46
+ xml.contributor do |c|
47
+ c.role **{ type: "publisher" }
48
+ c.organization do |a|
49
+ a.name "Ribose"
50
+ end
51
+ end
52
+ end
53
+
54
+ def metadata_committee(node, xml)
55
+ xml.editorialgroup do |a|
56
+ a.committee node.attr("technical-committee"),
57
+ **attr_code(type: node.attr("technical-committee-type"))
58
+ end
59
+ end
60
+
61
+ def title(node, xml)
62
+ ["en"].each do |lang|
63
+ xml.title **{ language: lang, format: "plain" } do |t|
64
+ t << asciidoc_sub(node.attr("title"))
65
+ end
66
+ end
67
+ end
68
+
69
+ def metadata_status(node, xml)
70
+ xml.status(**{ format: "plain" }) { |s| s << node.attr("status") }
71
+ end
72
+
73
+ def metadata_id(node, xml)
74
+ xml.docidentifier { |i| i << node.attr("docnumber") }
75
+ end
76
+
77
+ def metadata_copyright(node, xml)
78
+ from = node.attr("copyright-year") || Date.today.year
79
+ xml.copyright do |c|
80
+ c.from from
81
+ c.owner do |owner|
82
+ owner.organization do |o|
83
+ o.name "Ribose"
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ def title_validate(root)
90
+ nil
91
+ end
92
+
93
+ def makexml(node)
94
+ result = ["<?xml version='1.0' encoding='UTF-8'?>\n<m3d-standard>"]
95
+ @draft = node.attributes.has_key?("draft")
96
+ result << noko { |ixml| front node, ixml }
97
+ result << noko { |ixml| middle node, ixml }
98
+ result << "</m3d-standard>"
99
+ result = textcleanup(result.flatten * "\n")
100
+ ret1 = cleanup(Nokogiri::XML(result))
101
+ validate(ret1)
102
+ ret1.root.add_namespace(nil, M3D_NAMESPACE)
103
+ ret1
104
+ end
105
+
106
+ def doctype(node)
107
+ d = node.attr("doctype")
108
+ unless %w{policy best-practices supporting-document report}.include? d
109
+ warn "#{d} is not a legal document type: reverting to 'report'"
110
+ d = "report"
111
+ end
112
+ d
113
+ end
114
+
115
+ def document(node)
116
+ init(node)
117
+ ret1 = makexml(node)
118
+ ret = ret1.to_xml(indent: 2)
119
+ unless node.attr("nodoc") || !node.attr("docfile")
120
+ filename = node.attr("docfile").gsub(/\.adoc/, ".xml").
121
+ gsub(%r{^.*/}, "")
122
+ File.open(filename, "w") { |f| f.write(ret) }
123
+ html_converter(node).convert filename unless node.attr("nodoc")
124
+ word_converter(node).convert filename unless node.attr("nodoc")
125
+ end
126
+ @files_to_delete.each { |f| system "rm #{f}" }
127
+ ret
128
+ end
129
+
130
+ def validate(doc)
131
+ content_validate(doc)
132
+ schema_validate(formattedstr_strip(doc.dup),
133
+ File.join(File.dirname(__FILE__), "m3d.rng"))
134
+ end
135
+
136
+ def literal(node)
137
+ noko do |xml|
138
+ xml.figure **id_attr(node) do |f|
139
+ figure_title(node, f)
140
+ f.pre node.lines.join("\n")
141
+ end
142
+ end
143
+ end
144
+
145
+ def sections_cleanup(x)
146
+ super
147
+ x.xpath("//*[@inline-header]").each do |h|
148
+ h.delete("inline-header")
149
+ end
150
+ end
151
+
152
+ def style(n, t)
153
+ return
154
+ end
155
+
156
+ def html_converter(node)
157
+ IsoDoc::M3d::HtmlConvert.new(html_extract_attributes(node))
158
+ end
159
+
160
+ def word_converter(node)
161
+ IsoDoc::M3d::WordConvert.new(doc_extract_attributes(node))
162
+ end
163
+
164
+ def inline_quoted(node)
165
+ noko do |xml|
166
+ case node.type
167
+ when :emphasis then xml.em node.text
168
+ when :strong then xml.strong node.text
169
+ when :monospaced then xml.tt node.text
170
+ when :double then xml << "\"#{node.text}\""
171
+ when :single then xml << "'#{node.text}'"
172
+ when :superscript then xml.sup node.text
173
+ when :subscript then xml.sub node.text
174
+ when :asciimath then stem_parse(node.text, xml)
175
+ else
176
+ case node.role
177
+ when "strike" then xml.strike node.text
178
+ when "smallcap" then xml.smallcap node.text
179
+ when "keyword" then xml.keyword node.text
180
+ else
181
+ xml << node.text
182
+ end
183
+ end
184
+ end.join
185
+ end
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,184 @@
1
+ <html xmlns:v="urn:schemas-microsoft-com:vml"
2
+ xmlns:o="urn:schemas-microsoft-com:office:office"
3
+ xmlns:w="urn:schemas-microsoft-com:office:word"
4
+ xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
5
+ xmlns:mv="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
6
+
7
+ <head>
8
+ <meta name=Title content="">
9
+ <meta name=Keywords content="">
10
+ <meta http-equiv=Content-Type content="text/html; charset=utf-8">
11
+ <meta name=ProgId content=Word.Document>
12
+ <meta name=Generator content="Microsoft Word 15">
13
+ <meta name=Originator content="Microsoft Word 15">
14
+ <link id=Main-File rel=Main-File href="../{{ filename }}.html">
15
+ <!--[if gte mso 9]><xml>
16
+ <o:shapedefaults v:ext="edit" spidmax="2049"/>
17
+ </xml><![endif]-->
18
+ </head>
19
+
20
+ <body lang=EN link=blue vlink="#954F72">
21
+
22
+ <div style='mso-element:footnote-separator' id=fs>
23
+
24
+ <p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
25
+ normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
26
+
27
+ <hr align=left size=1 width="33%">
28
+
29
+ <![endif]></span></span></p>
30
+
31
+ </div>
32
+
33
+ <div style='mso-element:footnote-continuation-separator' id=fcs>
34
+
35
+ <p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
36
+ normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
37
+
38
+ <hr align=left size=1>
39
+
40
+ <![endif]></span></span></p>
41
+
42
+ </div>
43
+
44
+ <div style='mso-element:endnote-separator' id=es>
45
+
46
+ <p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
47
+ normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
48
+
49
+ <hr align=left size=1 width="33%">
50
+
51
+ <![endif]></span></span></p>
52
+
53
+ </div>
54
+
55
+ <div style='mso-element:endnote-continuation-separator' id=ecs>
56
+
57
+ <p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
58
+ normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
59
+
60
+ <hr align=left size=1>
61
+
62
+ <![endif]></span></span></p>
63
+
64
+ </div>
65
+
66
+ <div style='mso-element:header' id=eh1>
67
+
68
+ <p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
69
+ mso-line-height-rule:exactly'><span lang=EN-GB>CS&nbsp;{{ docnumber }}:{{ docyear }}</span></p>
70
+
71
+ </div>
72
+
73
+ <div style='mso-element:header' id=h1>
74
+
75
+ <p class=MsoHeader style='margin-bottom:18.0pt'><span lang=EN-GB
76
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-weight:normal'>©
77
+ The Calendaring and Scheduling Consortium, Inc.&nbsp;{{ docyear }}&nbsp;– All rights reserved</span><span lang=EN-GB
78
+ style='font-weight:normal'><o:p></o:p></span></p>
79
+
80
+ </div>
81
+
82
+ <div style='mso-element:footer' id=ef1>
83
+
84
+ <p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
85
+ exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
86
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
87
+ style='mso-element:field-begin'></span><span
88
+ style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>  
89
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
90
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
91
+ mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
92
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
93
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
94
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
95
+ style='mso-tab-count:1'>                                                                                                                                                                           </span>©
96
+ The Calendaring and Scheduling Consortium, Inc.&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
97
+
98
+ </div>
99
+
100
+ <div style='mso-element:header' id=eh2>
101
+
102
+ <p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
103
+ mso-line-height-rule:exactly'><span lang=EN-GB>The Calendaring and Scheduling Consortium, Inc.&nbsp;{{ docnumber }}:{{ docyear }}</span></p>
104
+
105
+ </div>
106
+
107
+ <div style='mso-element:header' id=h2>
108
+
109
+ <p class=MsoHeader align=right style='text-align:right;line-height:12.0pt;
110
+ mso-line-height-rule:exactly'><span lang=EN-GB>The Calendaring and Scheduling Consortium, Inc.&nbsp;{{ docnumber }}:{{ docyear }}</span></p>
111
+
112
+ </div>
113
+
114
+ <div style='mso-element:footer' id=ef2>
115
+
116
+ <p class=MsoFooter style='line-height:12.0pt;mso-line-height-rule:exactly'><!--[if supportFields]><span
117
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
118
+ style='mso-element:field-begin'></span><span
119
+ style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>  
120
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
121
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
122
+ style='mso-no-proof:yes'>ii</span></span><!--[if supportFields]><span
123
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
124
+ style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
125
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
126
+ 1'>                                                                                                                                                                           </span>©
127
+ The Calendaring and Scheduling Consortium, Inc.&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
128
+
129
+ </div>
130
+
131
+ <div style='mso-element:footer' id=f2>
132
+
133
+ <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
134
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© The Calendaring and Scheduling Consortium, Inc.&nbsp;{{ docyear }}&nbsp;– All
135
+ rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
136
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
137
+ style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>  
138
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
139
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
140
+ style='mso-no-proof:yes'>iii</span></span><!--[if supportFields]><span
141
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
142
+ style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
143
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
144
+
145
+ </div>
146
+
147
+ <div style='mso-element:footer' id=ef3>
148
+
149
+ <p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
150
+ exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
151
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
152
+ style='mso-element:field-begin'></span><span
153
+ style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>  
154
+ </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
155
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
156
+ mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
157
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
158
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
159
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
160
+ style='mso-tab-count:1'>                                                                                                                                                                           </span>©
161
+ The Calendaring and Scheduling Consortium, Inc.&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
162
+
163
+ </div>
164
+
165
+ <div style='mso-element:footer' id=f3>
166
+
167
+ <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
168
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© The Calendaring and Scheduling Consortium, Inc.&nbsp;{{ docyear }}&nbsp;– All
169
+ rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
170
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
171
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
172
+ PAGE<span style='mso-spacerun:yes'>   </span>\* MERGEFORMAT <span
173
+ style='mso-element:field-separator'></span></span></b><![endif]--><b
174
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
175
+ mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b
176
+ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
177
+ mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
178
+ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
179
+
180
+ </div>
181
+
182
+ </body>
183
+
184
+ </html>
@@ -0,0 +1,8 @@
1
+ <nav>
2
+ <h1 id="content">Contents</h1>
3
+ <div id="toc"></div>
4
+
5
+ </nav>
6
+
7
+
8
+ <div class="rule toc"></div>
@@ -0,0 +1,95 @@
1
+ <div class="document-stage-band" id="working-draft-band">
2
+ <p class="document-stage">{{ status }}</p>
3
+ </div>
4
+
5
+ <div class="document-type-band" id="standard-band">
6
+ <p class="document-type">Ribose {{ doctype }}</p>
7
+ </div>
8
+
9
+
10
+
11
+ <div id='toggle'> <span>•</span> </div>
12
+
13
+ <header>
14
+
15
+ <!--<div class="WordSection1">-->
16
+ <div class="coverpage">
17
+ <div class="wrapper-top">
18
+
19
+ <div class="coverpage-doc-identity">
20
+ <div class="doc-number">
21
+ <span class="docnumber">{{ docnumber }}</span>
22
+ <span class="docnumber-separator">:</span>
23
+ <span class="docyear">{{ docyear }}</span>
24
+ </div>
25
+
26
+ <div class="coverpage-title">
27
+ <span class="title-first">{{ doctitle }}</span>
28
+ <!--<span class="title-second">{{ docsubtitle }}</span>-->
29
+ </div>
30
+ </div>
31
+
32
+ <div class="coverpage-logo">
33
+ <span>The Calendaring and Scheduling Consortium</span>
34
+ </div>
35
+
36
+ <div class="coverpage-tc-name">
37
+ <span>TC {{ tc }}</span>
38
+ </div>
39
+ </div>
40
+
41
+ <div class="WordSection11">
42
+ <div class="coverpage-stage-block" >
43
+ <span class="coverpage-stage" id="{{ doctype | replace: ' ', '-' | downcase }}">Ribose {{ doctype }}</span>
44
+ </div>
45
+
46
+ <div class="coverpage-stage-block" >
47
+ <span class="coverpage-maturity" id="{{ status | replace: ' ', '-' | downcase }}">{{ status }}</span>
48
+ </div>
49
+
50
+ {% if status != "Published" and status != "Withdrawn" %}
51
+ <div class="coverpage-warning">
52
+ <span class="title">Warning for Drafts</span>
53
+
54
+ <p class="content">
55
+ This document is not a Ribose Standard. It is distributed for review and
56
+ comment, and is subject to change without notice and may not be referred to as
57
+ a Standard. Recipients of this draft are invited to submit, with their
58
+ comments, notification of any relevant patent rights of which they are aware
59
+ and to provide supporting documentation.
60
+ </p>
61
+ </div>
62
+ {% endif %}
63
+
64
+ <div class="copyright">
65
+ <p class="year">
66
+ &copy; {{ docyear }} The Calendaring and Scheduling Consortium, Inc.
67
+ </p>
68
+
69
+ <p class="message">
70
+ All rights reserved. Unless otherwise specified, no part of this
71
+ publication may be reproduced or utilized otherwise in any form or by any
72
+ means, electronic or mechanical, including photocopying, or posting on the
73
+ internet or an intranet, without prior written permission. Permission can
74
+ be requested from the address below.
75
+ </p>
76
+
77
+ <div class="contact-info">
78
+ <p class="name">The Calendaring and Scheduling Consortium, Inc.</p>
79
+ <p class="address">
80
+ 4390 Chaffin Lane<br />
81
+ McKinleyville<br />
82
+ California 95519<br />
83
+ United States of America<br />
84
+ <br />
85
+ <a href="mailto:copyright@ribose.com">copyright@ribose.com</a><br />
86
+ <a href="open.ribose.com">open.ribose.com</a>
87
+ </p>
88
+ </div>
89
+ </div>
90
+
91
+ <div class="rule"></div>
92
+ </div>
93
+
94
+
95
+ </header>