Euen WARNUNG: Dieses Projekt hatnpmjs.comvon"dss"zu"@documented-style-sheets/parser"übertragen.
DSS , dokumentierte Style Sheets ist ein allgemeiner Kommentarführer und Parser (z. B. CSS, Less, Stylus, Sass, SCSS & JS-Kommentare). Dieses Projekt führt eine statische Dateianalyse und Parsen durch, um ein Objekt zu generieren, das zum Generieren von StyleGuides verwendet werden soll.
dss.detectordss.parsernpm i @documented-style-sheets/parser In den meisten Fällen möchten Sie den DSS -Parser in einen Build -Schritt einbeziehen, in dem Dokumentationsdateien automatisch generiert werden (oder Sie möchten nur mit diesem zurückgegebenen Object für andere Mittel herumspielen). In beiden Fällen unterstützen wir offiziell ein Grunzen -Plugin und ein Gulp -Plugin.
//
// @name Button
// @description Your standard form button.
//
// @state :hover - Highlights when hovering.
// @state :disabled - Dims the button when disabled.
// @state .primary - Indicates button is the primary action.
// @state .smaller - A smaller button
//
// @markup
// <button>This is a button</button>
// // Requirements
const fs = require ( 'fs' )
const { parse } = require ( '@documented-style-sheets/parser' )
// Get file contents
const fileContents = fs . readFileSync ( 'styles.css' )
// Run the DSS Parser on the file contents
parse ( fileContents , { } , function ( parsedObject ) {
// Output the parsed document
console . log ( parsedObject )
} ) {
"name" : " Button " ,
"description" : " Your standard form button. " ,
"state" : [
{
"name" : " :hover " ,
"escaped" : " pseudo-class-hover " ,
"description" : " Highlights when hovering. "
},
{
"name" : " :disabled " ,
"escaped" : " pseudo-class-disabled " ,
"description" : " Dims the button when disabled. "
},
{
"name" : " .primary " ,
"escaped" : " primary " ,
"description" : " Indicates button is the primary action. "
},
{
"name" : " .smaller " ,
"escaped" : " smaller " ,
"description" : " A smaller button "
}
],
"markup" : {
"example" : " <button>This is a button</button> " ,
"escaped" : " <button>This is a button</button> "
}
}Diese Methode definiert die Art und Weise, wie sich Punkte von Interesse (dh Variablen) in Textlinien und später analysiert haben. DSS Dogfoods Diese API und die Standardimplementierung ist unten aufgeführt.
// Describe default detection pattern
// Note: the current line, as a string, is passed to this function
const dss = require ( '@documented-style-sheets/parser' )
dss . detector ( function ( line ) {
if ( typeof line !== 'string' ) {
return false
}
var reference = line . split ( "nn" ) . pop ( )
return ! ! reference . match ( / .*@ / )
} )
dss . parse ( ... ) DSS enthält standardmäßig 4 Parsers für den name , description , state und markup eines Kommentarblocks. Sie können diese Standardeinstellungen hinzufügen oder überschreiben, indem Sie einen neuen Parser registrieren. Diese Standardeinstellungen folgen auch einem Muster, das den @ Decorator verwendet, um sie zu identifizieren. Sie können dieses Behaivour ändern, der eine andere Rückruffunktion als dss.detector() bereitstellt.
dss.parser erwartet den Namen der gesuchten Variablen und eine Rückruffunktion, um den Inhalt zu manipulieren. Was auch immer durch diese Rückruffunktion zurückgegeben wird, wird verwendet, um JSON zu generieren.
this :this.file : Die aktuelle Dateithis.name : Der Name des Parsersthis.options : Die Optionen, die anfangs an dss.parse() übergeben wurdenthis.line :this.line.contents : Der mit dieser Variablen verknüpfte Inhaltthis.line.from : Die Zeilennummer, in der diese Variable gefunden wurdethis.line.to : Die Zeilennummer, in der die Inhalte dieser Variablen endetethis.block :this.block.contents : Der mit dem Kommentarblock dieser Variablen zugeordnete Inhaltthis.block.from : Die Zeilennummer, in der der Kommentarblock dieser Variablen beginntthis.block.to : Die Zeilennummer, in der der Kommentarblock dieser Variablen endet // Matches @version
dss . parser ( 'version' , function ( ) {
// Just returns the lines contents
return this . line . contents
} ) dss . parser ( 'link' , function ( ) {
// Replace link with HTML wrapped version
const exp = / (b(https?|ftp|file): / / [ - A - Z0 - 9 + & @# / % ? = ~ _ | ! : , . ; ] * [ - A - Z0 - 9 + & @# / %= ~ _ | ] ) / ig
this . line . contents . replace ( exp , "<a href='$1'>$1</a>" )
return line
} )