highmark-markdown 0.0.217 → 0.0.219

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.
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ import Medias from "./medias";
3
4
  import RuleSets from "./ruleSets";
4
5
  import Declarations from "./declarations";
5
6
 
6
- import { EMPTY_STRING } from "../constants";
7
-
8
7
  export default class Division {
9
- constructor(ruleSets, declarations, selectorsList) {
8
+ constructor(medias, ruleSets, declarations, mediaType, selectorsList) {
9
+ this.medias = medias;
10
10
  this.ruleSets = ruleSets;
11
11
  this.declarations = declarations;
12
+ this.mediaType = mediaType;
12
13
  this.selectorsList = selectorsList;
13
14
  }
14
15
 
16
+ getMedias() {
17
+ return this.medias;
18
+ }
19
+
15
20
  getRuleSets() {
16
21
  return this.ruleSets;
17
22
  }
@@ -20,26 +25,35 @@ export default class Division {
20
25
  return this.declarations;
21
26
  }
22
27
 
28
+ getMediaType() {
29
+ return this.mediaType;
30
+ }
31
+
23
32
  getSelectorsList() {
24
33
  return this.selectorsList;
25
34
  }
26
35
 
27
36
  asCSS() {
28
37
  const outermost = true,
38
+ mediasCSS = this.medias.asCSS(this.mediaType, this.selectorsList, outermost),
29
39
  ruleSetsCSS = this.ruleSets.asCSS(this.selectorsList, outermost),
30
40
  declarationsCSS = this.declarations.asCSS(this.selectorsList, outermost),
31
- css = (declarationsCSS === EMPTY_STRING) ?
32
- ruleSetsCSS : ///
33
- `${declarationsCSS}
34
- ${ruleSetsCSS}`;
41
+ css = `
42
+
43
+ ${declarationsCSS}
44
+ ${mediasCSS}
45
+ ${ruleSetsCSS}
46
+
47
+ `;
35
48
 
36
49
  return css;
37
50
  }
38
51
 
39
- static fromNodeTokensAndSelectorsList(node, tokens, selectorsList) {
40
- const ruleSets = RuleSets.fromNodeAndTokens(node, tokens),
52
+ static fromNodeTokensMediaTypeAndSelectorsList(node, tokens, mediaType, selectorsList) {
53
+ const medias = Medias.fromNodeAndTokens(node, tokens),
54
+ ruleSets = RuleSets.fromNodeAndTokens(node, tokens),
41
55
  declarations = Declarations.fromNodeAndTokens(node, tokens),
42
- division = new Division(ruleSets, declarations, selectorsList);
56
+ division = new Division(medias, ruleSets, declarations, mediaType, selectorsList);
43
57
 
44
58
  return division;
45
59
  }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ import RuleSets from "./ruleSets";
4
+ import MediaTypes from "./mediaTypes";
5
+ import Declarations from "./declarations";
6
+
7
+ import { nodeQuery } from "../utilities/query";
8
+ import { EMPTY_STRING } from "../constants";
9
+
10
+ const mediaTypesNonTerminalNodeQuery = nodeQuery("/*/mediaTypes");
11
+
12
+ export default class Media {
13
+ constructor(types, ruleSets, declarations) {
14
+ this.types = types;
15
+ this.ruleSets = ruleSets;
16
+ this.declarations = declarations;
17
+ }
18
+
19
+ getTypes() {
20
+ return this.types;
21
+ }
22
+
23
+ getRuleSets() {
24
+ return this.ruleSets;
25
+ }
26
+
27
+ getDeclarations() {
28
+ return this.declarations;
29
+ }
30
+
31
+ asCSS(mediaType, selectorsList, outermost) {
32
+ let css = EMPTY_STRING;
33
+
34
+ const typeMatchMediaType = this.types.matchMediaType(mediaType);
35
+
36
+ if (typeMatchMediaType) {
37
+ const declarationsCSS = this.declarations.asCSS(selectorsList, outermost),
38
+ ruleSetsCSS = this.ruleSets.asCSS(selectorsList, outermost);
39
+
40
+ css = (declarationsCSS === EMPTY_STRING) ?
41
+ ruleSetsCSS : ///
42
+ `${declarationsCSS}
43
+ ${ruleSetsCSS}`;
44
+ }
45
+
46
+ return css;
47
+ }
48
+
49
+ static fromNodeAndTokens(node, tokens) {
50
+ const types = typesFromNodeAndTokens(node, tokens),
51
+ ruleSets = RuleSets.fromNodeAndTokens(node, tokens),
52
+ declarations = Declarations.fromNodeAndTokens(node, tokens),
53
+ media = new Media(types, ruleSets, declarations);
54
+
55
+ return media;
56
+ }
57
+ }
58
+
59
+ function typesFromNodeAndTokens(node, tokens) {
60
+ const mediaTypesNonTerminalNode = mediaTypesNonTerminalNodeQuery(node);
61
+
62
+ node = mediaTypesNonTerminalNode; ///
63
+
64
+ const mediaTypes = MediaTypes.fromNodeAndTokens(node, tokens),
65
+ types = mediaTypes;
66
+
67
+ return types;
68
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ import { nodeQuery } from "../utilities/query";
4
+
5
+ const nameTerminalNodesQuery = nodeQuery("/*/@name");
6
+
7
+ export default class MediaType {
8
+ constructor(name) {
9
+ this.name = name;
10
+ }
11
+
12
+ getName() {
13
+ return this.name;
14
+ }
15
+
16
+ asCSS() {
17
+ const css = this.name; ///
18
+
19
+ return css;
20
+ }
21
+
22
+ match(mediaType) {
23
+ const name = mediaType.getName(),
24
+ matches = (this.name === name);
25
+
26
+ return matches;
27
+ }
28
+
29
+ static fromMediaTypeName(mediaTypeName) {
30
+ const name = mediaTypeName, ///
31
+ mediaType = new MediaType(name);
32
+
33
+ return mediaType;
34
+ }
35
+
36
+ static fromNodeAndTokens(node, tokens) {
37
+ const name = nameFromNode(node),
38
+ mediaType = new MediaType(name);
39
+
40
+ return mediaType;
41
+ }
42
+ }
43
+
44
+ function nameFromNode(node) {
45
+ const nameTerminalNode = nameTerminalNodesQuery(node),
46
+ nameTerminalNodeContent = nameTerminalNode.getContent(),
47
+ name = nameTerminalNodeContent; ///
48
+
49
+ return name;
50
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ import MediaType from "./mediaType";
4
+
5
+ import { nodesQuery } from "../utilities/query";
6
+ import { EMPTY_STRING } from "../constants";
7
+
8
+ const mediaTypeNonTerminalNodesQuery = nodesQuery("/*/mediaType");
9
+
10
+ export default class MediaTypes {
11
+ constructor(array) {
12
+ this.array = array;
13
+ }
14
+
15
+ getLength() { return this.array.length; }
16
+
17
+ asCSS() {
18
+ let css = EMPTY_STRING;
19
+
20
+ const length = this.getLength();
21
+
22
+ if (length > 0) {
23
+ css = this.array.reduce((css, media) => {
24
+ const mediaTypeCSS = mediaType.asCSS();
25
+
26
+ css = (css === null) ?
27
+ mediaTypeCSS : ///
28
+ `${css} and ${mediaTypeCSS}`;
29
+
30
+ return css;
31
+ }, null);
32
+ }
33
+
34
+ return css;
35
+ }
36
+
37
+ matchMediaType(mediaType) {
38
+ const mediaTypeA = mediaType, ///
39
+ matchesMediaType = this.array.some((mediaType) => {
40
+ const mediaTypeB = mediaType, ///
41
+ matches = mediaTypeA.match(mediaTypeB);
42
+
43
+ if (matches) {
44
+ return true;
45
+ }
46
+ });
47
+
48
+ return matchesMediaType;
49
+ }
50
+
51
+ static fromNodeAndTokens(node, tokens) {
52
+ const mediaTypeNonTerminalNodes = mediaTypeNonTerminalNodesQuery(node),
53
+ array = mediaTypeNonTerminalNodes.map((mediaTypeNonTerminalNode) => {
54
+ const node = mediaTypeNonTerminalNode, ///
55
+ mediaType = MediaType.fromNodeAndTokens(node, tokens);
56
+
57
+ return mediaType;
58
+ }),
59
+ medias = new MediaTypes(array);
60
+
61
+ return medias;
62
+ }
63
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ import Media from "./media";
4
+
5
+ import { nodesQuery } from "../utilities/query";
6
+ import { EMPTY_STRING } from "../constants";
7
+
8
+ const mediaNonTerminalNodesQuery = nodesQuery("/*/media");
9
+
10
+ export default class Medias {
11
+ constructor(array) {
12
+ this.array = array;
13
+ }
14
+
15
+ getLength() { return this.array.length; }
16
+
17
+ asCSS(mediaType, selectorsList, outermost) {
18
+ let css = EMPTY_STRING;
19
+
20
+ const length = this.getLength(),
21
+ selectorsListLength = selectorsList.getLength();
22
+
23
+ if ((length > 0) && (selectorsListLength > 0)) {
24
+ css = this.array.reduce((css, media) => {
25
+ const mediaCSS = media.asCSS(mediaType, selectorsList, outermost);
26
+
27
+ css = (css === null) ?
28
+ mediaCSS : ///
29
+ `${css}${mediaCSS}`;
30
+
31
+ return css;
32
+ }, null);
33
+ }
34
+
35
+ return css;
36
+ }
37
+
38
+ static fromNodeAndTokens(node, tokens) {
39
+ const mediaNonTerminalNodes = mediaNonTerminalNodesQuery(node),
40
+ array = mediaNonTerminalNodes.map((mediaNonTerminalNode) => {
41
+ const node = mediaNonTerminalNode, ///
42
+ media = Media.fromNodeAndTokens(node, tokens);
43
+
44
+ return media;
45
+ }),
46
+ medias = new Medias(array);
47
+
48
+ return medias;
49
+ }
50
+ }
@@ -37,7 +37,7 @@ ${ruleSetsCSS}`;
37
37
  return css;
38
38
  }
39
39
 
40
- static fromRuleSetsNodeAndTokens(RuleSets, node, tokens) {
40
+ static fromNodeAndTokens(node, tokens, RuleSets) {
41
41
  const ruleSets = RuleSets.fromNodeAndTokens(node, tokens),
42
42
  declarations = Declarations.fromNodeAndTokens(node, tokens),
43
43
  selectorsList = SelectorsList.fromNodeAndTokens(node, tokens),
@@ -35,18 +35,11 @@ export default class RuleSets {
35
35
  return css;
36
36
  }
37
37
 
38
- static fromNothing() {
39
- const array = [],
40
- ruleSets = new RuleSets(array);
41
-
42
- return ruleSets;
43
- }
44
-
45
38
  static fromNodeAndTokens(node, tokens) {
46
39
  const ruleSetNonTerminalNodes = ruleSetNonTerminalNodesQuery(node),
47
40
  array = ruleSetNonTerminalNodes.map((ruleSetNonTerminalNode) => {
48
41
  const node = ruleSetNonTerminalNode, ///
49
- ruleSet = RuleSet.fromRuleSetsNodeAndTokens(RuleSets, node, tokens);
42
+ ruleSet = RuleSet.fromNodeAndTokens(node, tokens, RuleSets);
50
43
 
51
44
  return ruleSet;
52
45
  }),
@@ -1,25 +1,31 @@
1
1
  "use strict";
2
2
 
3
+ import MediaType from "../style/mediaType";
3
4
  import StyleElement from "../styleElement";
4
5
  import SelectorsList from "../style/selectorsList";
5
6
 
6
7
  import { EMPTY_STRING } from "../constants";
7
8
  import { createDOMElement } from "../styleElement";
8
- import { cssFromMarkdownStyleAndSelectorsList } from "../utilities/css";
9
+ import { cssFromMarkdownStyleMediaTypeAndSelectorsList } from "../utilities/css";
9
10
 
10
11
  export default class MarkdownStyleElement extends StyleElement {
11
- constructor(domElement, selectorsList) {
12
+ constructor(domElement, mediaType, selectorsList) {
12
13
  super(domElement);
13
14
 
15
+ this.mediaType = mediaType;
14
16
  this.selectorsList = selectorsList;
15
17
  }
16
18
 
19
+ getMediaType() {
20
+ return this.mediaType;
21
+ }
22
+
17
23
  getSelectorsList() {
18
24
  return this.selectorsList;
19
25
  }
20
26
 
21
- update(markdownStyle = null) {
22
- const css = cssFromMarkdownStyleAndSelectorsList(markdownStyle, this.selectorsList);
27
+ update(markdownStyle) {
28
+ const css = cssFromMarkdownStyleMediaTypeAndSelectorsList(markdownStyle, this.mediaType, this.selectorsList);
23
29
 
24
30
  this.setCSS(css);
25
31
 
@@ -32,16 +38,19 @@ export default class MarkdownStyleElement extends StyleElement {
32
38
  this.update(markdownStyle)
33
39
  }
34
40
 
35
- static fromSelectorsString(Class, selectorString) {
41
+ static fromMediaTypeNameAndSelectorsString(Class, mediaTypeName, selectorString) {
36
42
  if (selectorString === undefined) {
37
- selectorString = Class; ///
43
+ selectorString = mediaTypeName; ///
44
+
45
+ mediaTypeName = Class; ///
38
46
 
39
47
  Class = MarkdownStyleElement; ///
40
48
  }
41
49
 
42
50
  const domElement = createDOMElement(),
51
+ mediaType = MediaType.fromMediaTypeName(mediaTypeName),
43
52
  selectorsList = SelectorsList.fromSelectorsString(selectorString),
44
- markdownStyleElement = new Class(domElement, selectorsList);
53
+ markdownStyleElement = new Class(domElement, mediaType, selectorsList);
45
54
 
46
55
  return markdownStyleElement;
47
56
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Division from "../style/division";
4
+ import MediaType from "../style/mediaType";
4
5
  import SelectorsList from "../style/selectorsList";
5
6
  import MarkdownStyleLexer from "../markdownStyle/lexer";
6
7
  import MarkdownStyleParser from "../markdownStyle/parser";
@@ -10,7 +11,7 @@ import { EMPTY_STRING } from "../constants";
10
11
  const markdownStyleLexer = MarkdownStyleLexer.fromNothing(),
11
12
  markdownStyleParser = MarkdownStyleParser.fromNothing();
12
13
 
13
- export function cssFromMarkdownStyleAndSelectorsList(markdownStyle, selectorsList) {
14
+ export function cssFromMarkdownStyleMediaTypeAndSelectorsList(markdownStyle, mediaType, selectorsList) {
14
15
  let css = EMPTY_STRING;
15
16
 
16
17
  const lexer = markdownStyleLexer, ///
@@ -20,7 +21,7 @@ export function cssFromMarkdownStyleAndSelectorsList(markdownStyle, selectorsLis
20
21
  node = parser.parse(tokens);
21
22
 
22
23
  if (node !== null) {
23
- const division = Division.fromNodeTokensAndSelectorsList(node, tokens, selectorsList);
24
+ const division = Division.fromNodeTokensMediaTypeAndSelectorsList(node, tokens, mediaType, selectorsList);
24
25
 
25
26
  css = division.asCSS();
26
27
  }
@@ -28,14 +29,15 @@ export function cssFromMarkdownStyleAndSelectorsList(markdownStyle, selectorsLis
28
29
  return css;
29
30
  }
30
31
 
31
- export function cssFromMarkdownStyleAndSelectorString(markdownStyle, selectorString) {
32
+ export function cssFromMarkdownStyleMediaTypeNameAndSelectorString(markdownStyle, mediaTypeName, selectorString) {
32
33
  const selectorsList = SelectorsList.fromSelectorsString(selectorString),
33
- css = cssFromMarkdownStyleAndSelectorsList(markdownStyle, selectorsList);
34
+ mediaType = MediaType.fromMediaTypeName(mediaTypeName),
35
+ css = cssFromMarkdownStyleMediaTypeAndSelectorsList(markdownStyle, mediaType, selectorsList);
34
36
 
35
37
  return css;
36
38
  }
37
39
 
38
40
  export default {
39
- cssFromMarkdownStyleAndSelectorsList,
40
- cssFromMarkdownStyleAndSelectorString
41
+ cssFromMarkdownStyleMediaTypeAndSelectorsList,
42
+ cssFromMarkdownStyleMediaTypeNameAndSelectorString
41
43
  };
@@ -19,7 +19,7 @@ export function nodeQuery(expression) {
19
19
 
20
20
  return function(node) {
21
21
  const nodes = query.execute(node),
22
- nodesLength = nodes.length;
22
+ nodesLength = nodes.length;
23
23
 
24
24
  if (nodesLength > 0) {
25
25
  const firstNode = first(nodes);