@tenjuu99/blog 0.2.43 → 0.2.45

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 (2) hide show
  1. package/lib/pageData.js +35 -17
  2. package/package.json +1 -1
package/lib/pageData.js CHANGED
@@ -44,23 +44,7 @@ const parse = (content, name, ext) => {
44
44
  metaDataDefault.full_url = fullUrl(metaDataDefault)
45
45
  return metaDataDefault
46
46
  }
47
- const metaData = Object.fromEntries(
48
- matched.groups.variables.split('\n').filter(line => line.includes(':'))
49
- .map(line => {
50
- const index = line.indexOf(':')
51
- const key = line.slice(0, index)
52
- let value = line.slice(index + 1).trim()
53
- if (value === 'true' || value === 'false') {
54
- value = JSON.parse(value)
55
- } else {
56
- if (value.startsWith('config.')) {
57
- const envName = value.split('.').pop()
58
- eval(`value = config.${envName}`)
59
- }
60
- }
61
- return [key, value]
62
- })
63
- )
47
+ const metaData = parseMetaData(matched.groups.variables)
64
48
  const metaDataMerged = Object.assign(metaDataDefault, metaData)
65
49
  metaDataMerged.full_url = fullUrl(metaDataMerged)
66
50
  metaDataMerged['__output'] = name === 'index' ? '/index.html' : `${metaDataMerged.url}.${metaDataMerged.ext}`
@@ -68,4 +52,38 @@ const parse = (content, name, ext) => {
68
52
  return metaDataMerged
69
53
  }
70
54
 
55
+ const parseMetaData = (data) => {
56
+ const metaData = {}
57
+ let isStringContinue = false
58
+ let key, value
59
+ for (const line of data.split('\n')) {
60
+ if (!isStringContinue) {
61
+ const match = line.match(/^([a-zA-Z_]+):/)
62
+ if (match) {
63
+ key = match[1]
64
+ value = line.slice(line.indexOf(':') + 1).trim()
65
+ if (value === 'true' || value === 'false') {
66
+ value = JSON.parse(value)
67
+ } else {
68
+ if (value.startsWith('config.')) {
69
+ const envName = value.split('.').pop()
70
+ eval(`value = config.${envName}`)
71
+ }
72
+ }
73
+ metaData[key] = value
74
+ if (typeof value === 'string' && value.indexOf('"') === 0) {
75
+ isStringContinue = true
76
+ }
77
+ }
78
+ } else if (key) {
79
+ metaData[key] = `${metaData[key]}\n${line}`
80
+ if (line.trim().match(/"$/)) {
81
+ isStringContinue = false
82
+ metaData[key] = metaData[key].trim().replace(/^"([^"]+)"$/i, '$1')
83
+ }
84
+ }
85
+ }
86
+ return metaData
87
+ }
88
+
71
89
  export default makePageData
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenjuu99/blog",
3
- "version": "0.2.43",
3
+ "version": "0.2.45",
4
4
  "description": "blog template",
5
5
  "main": "index.js",
6
6
  "scripts": {