securemark 0.286.1 → 0.286.3

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.
@@ -204,9 +204,10 @@ describe('Unit: parser/inline', () => {
204
204
  assert.deepStrictEqual(inspect(parser('#a')), [['<a class="hashtag" href="/hashtags/a">#a</a>'], '']);
205
205
  assert.deepStrictEqual(inspect(parser('#a\nb\n#c\n[#d]')), [['<a class="hashtag" href="/hashtags/a">#a</a>', '<br>', 'b', '<br>', '<a class="hashtag" href="/hashtags/c">#c</a>', '<br>', '<a class="index" href="#index::d">d</a>'], '']);
206
206
  assert.deepStrictEqual(inspect(parser('##a')), [['##a'], '']);
207
- assert.deepStrictEqual(inspect(parser('_#a')), [['_#a'], '']);
208
- assert.deepStrictEqual(inspect(parser('_#a_')), [['_#a', '_'], '']);
209
- assert.deepStrictEqual(inspect(parser('_#a_b')), [['_#a_b'], '']);
207
+ assert.deepStrictEqual(inspect(parser('_#a')), [['_', '<a class="hashtag" href="/hashtags/a">#a</a>'], '']);
208
+ assert.deepStrictEqual(inspect(parser('_#a_')), [['_', '<a class="hashtag" href="/hashtags/a">#a</a>', '_'], '']);
209
+ assert.deepStrictEqual(inspect(parser('_#a_b')), [['_', '<a class="hashtag" href="/hashtags/a_b">#a_b</a>'], '']);
210
+ assert.deepStrictEqual(inspect(parser('_#a_b_')), [['_', '<a class="hashtag" href="/hashtags/a_b">#a_b</a>', '_'], '']);
210
211
  assert.deepStrictEqual(inspect(parser('a#b')), [['a#b'], '']);
211
212
  assert.deepStrictEqual(inspect(parser('0a#b')), [['0a#b'], '']);
212
213
  assert.deepStrictEqual(inspect(parser('あ#b')), [['あ#b'], '']);
@@ -216,8 +217,6 @@ describe('Unit: parser/inline', () => {
216
217
  assert.deepStrictEqual(inspect(parser('「#あ」')), [['「', '<a class="hashtag" href="/hashtags/あ">#あ</a>', '」'], '']);
217
218
  assert.deepStrictEqual(inspect(parser('a\n#b')), [['a', '<br>', '<a class="hashtag" href="/hashtags/b">#b</a>'], '']);
218
219
  assert.deepStrictEqual(inspect(parser('a\\\n#b')), [['a', '<br>', '<a class="hashtag" href="/hashtags/b">#b</a>'], '']);
219
- assert.deepStrictEqual(inspect(parser('_a_#b')), [['_', 'a_#b'], '']);
220
- assert.deepStrictEqual(inspect(parser('*a*#b')), [['<em>a</em>', '<a class="hashtag" href="/hashtags/b">#b</a>'], '']);
221
220
  assert.deepStrictEqual(inspect(parser('((a))#b')), [['<sup class="annotation"><span>a</span></sup>', '<a class="hashtag" href="/hashtags/b">#b</a>'], '']);
222
221
  assert.deepStrictEqual(inspect(parser('[[a]]#b')), [['<sup class="reference"><span>a</span></sup>', '<a class="hashtag" href="/hashtags/b">#b</a>'], '']);
223
222
  assert.deepStrictEqual(inspect(parser('[#a')), [['[', '<a class="hashtag" href="/hashtags/a">#a</a>'], '']);
@@ -227,10 +226,12 @@ describe('Unit: parser/inline', () => {
227
226
 
228
227
  it('hashnum', () => {
229
228
  assert.deepStrictEqual(inspect(parser('#1')), [['<a class="hashnum">#1</a>'], '']);
229
+ assert.deepStrictEqual(inspect(parser(`#1'`)), [[`<a class="hashnum">#1</a>`, `'`], '']);
230
230
  assert.deepStrictEqual(inspect(parser('#1234567890@a')), [['#1234567890@a'], '']);
231
- assert.deepStrictEqual(inspect(parser('_#1')), [['_#1'], '']);
232
- assert.deepStrictEqual(inspect(parser('_#1_')), [['_#1_'], '']);
233
- assert.deepStrictEqual(inspect(parser('_#1_0')), [['_#1_0'], '']);
231
+ assert.deepStrictEqual(inspect(parser('_#1')), [['_', '<a class="hashnum">#1</a>'], '']);
232
+ assert.deepStrictEqual(inspect(parser('_#1_')), [['_', '<a class="hashnum">#1</a>', '_'], '']);
233
+ assert.deepStrictEqual(inspect(parser('_#1_0')), [['_', '<a class="hashtag" href="/hashtags/1_0">#1_0</a>'], '']);
234
+ assert.deepStrictEqual(inspect(parser('_#1_0_')), [['_', '<a class="hashtag" href="/hashtags/1_0">#1_0</a>', '_'], '']);
234
235
  assert.deepStrictEqual(inspect(parser('「#1」')), [['「', '<a class="hashnum">#1</a>', '」'], '']);
235
236
  });
236
237
 
@@ -5,6 +5,9 @@ import { consume } from '../../combinator';
5
5
  export function str(pattern: string | RegExp, not?: string): StrParser;
6
6
  export function str(pattern: string | RegExp, not?: string): Parser<string, Context<StrParser>, []> {
7
7
  assert(pattern);
8
+ const count = typeof pattern === 'object'
9
+ ? /[^^\\*+][*+]/.test(pattern.source)
10
+ : false;
8
11
  return typeof pattern === 'string'
9
12
  ? ({ source }) => {
10
13
  if (source === '') return;
@@ -16,7 +19,7 @@ export function str(pattern: string | RegExp, not?: string): Parser<string, Cont
16
19
  : ({ source, context }) => {
17
20
  if (source === '') return;
18
21
  const m = source.match(pattern);
19
- m && consume(m[0].length, context);
22
+ count && m && consume(m[0].length, context);
20
23
  if (m && not && source.slice(m[0].length, m[0].length + not.length) === not) return;
21
24
  return m && m[0].length > 0
22
25
  ? [[m[0]], source.slice(m[0].length)]
@@ -4,9 +4,9 @@ import { union, consume, focus } from '../../combinator';
4
4
  import { str } from './str';
5
5
  import { html } from 'typed-dom/dom';
6
6
 
7
- export const delimiter = /[\s\x00-\x7F()[]{}“”‘’「」『』]|\S[#>]/u;
7
+ export const delimiter = /[\s\x00-\x7F()[]{}“”‘’「」『』]|\S#|[0-9A-Za-z]>/u;
8
8
  export const nonWhitespace = /[\S\n]|$/u;
9
- export const nonAlphanumeric = /[^0-9A-Za-z]|\S[#>]|$/u;
9
+ export const nonAlphanumeric = /[^0-9A-Za-z]|\S#|[0-9A-Za-z]>|$/u;
10
10
  const repeat = str(/^(.)\1*/);
11
11
 
12
12
  export const text: TextParser = ({ source, context }) => {