Skip to content

Commit

Permalink
592: checking for correct assembly metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
rohennes committed Oct 16, 2023
1 parent 88553c5 commit d14aa36
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
; Vale configuration file to test the `AssemblyContainsRequiredMetadata` rule
StylesPath = ../../../styles
MinAlertLevel = suggestion
[*.adoc]
OpenShiftAsciiDoc.AssemblyContainsRequiredMetadata = YES
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
//vale-fixture
:context: <unique-context-for-assembly>
= title

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
//vale-fixture
:_content-type: ASSEMBLY
[id="<unique-heading-for-assembly>"]
= Assembly title
include::_attributes/input-attributes-file
:context: some-context

toc::[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
extends: script
message: "Assembly is missing required metadata. Ensure you include metadata for attributes, TOC and context."
level: error
link: https://github.com/openshift/openshift-docs/blob/main/contributing_to_docs/doc_guidelines.adoc#assembly-file-metadata
scope: raw
script: |
text := import("text")
matches := []
//trim extra whitespace
scope = text.trim_space(scope)
//add a newline, it might be missing
scope += "\n"
attribute_regex := "include::_attributes/"
toc_regex := "toc::\\[\\]"
context_regex := ":context:"
matchAttribute := false
matchToc := false
matchContext := false
//Check if context declaration is on any line
for line in text.split(scope, "\n") {
if text.re_match(attribute_regex, line){
matchAttribute = true
} else if text.re_match(toc_regex, line){
matchToc = true
} else if text.re_match(context_regex, line){
matchContext = true
}
}
//Highlight first line if context declaration not found in file
if !matchAttribute || !matchToc || !matchContext {
matches = append(matches, {begin: 1, end: 10})
}
46 changes: 46 additions & 0 deletions tengo-rule-scripts/AssemblyContainsRequiredMetadata.tengo
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
Tengo Language
Checks that lines are not hard-wrapped.
$ tengo HardWrappedLines.tengo <asciidoc_file_to_validate>
*/

fmt := import("fmt")
os := import("os")
text := import("text")

input := os.args()
scope := os.read_file(input[2])
matches := []

//trim extra whitespace
scope = text.trim_space(scope)
//add a newline, it might be missing
scope += "\n"

attribute_regex := "include::_attributes/"
toc_regex := "toc::\\[\\]"
context_regex := ":context:"
matchAttribute := false
matchToc := false
matchContext := false

//Check if context declaration is on any line
for line in text.split(scope, "\n") {
if text.re_match(attribute_regex, line){
matchAttribute = true
fmt.println("Found attribute declaration.")
} else if text.re_match(toc_regex, line){
matchToc = true
fmt.println("Found toc declaration")
} else if text.re_match(context_regex, line){
matchContext = true
fmt.println("Found context declaration")
}
}

//Highlight first line if context declaration not found in file
if !matchAttribute || !matchToc || !matchContext {
matches = append(matches, {begin: 1, end: 10})
fmt.println("Did not find correct metadata")
fmt.println(matches)
}

0 comments on commit d14aa36

Please sign in to comment.