-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhaiku.mjs
46 lines (41 loc) · 1.21 KB
/
haiku.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import core from '@actions/core';
import { getOctokit, context } from '@actions/github';
import { syllable } from 'syllable';
const token = process.argv[2];
const octokit = getOctokit(token);
const issue = context.issue;
const issueBody = context.payload.issue.body;
function countSyllables(line) {
const words = line.split(' ');
let syllableCount = 0;
for (const word of words) {
syllableCount += syllable(word);
}
return syllableCount;
}
function isHaiku(text) {
if (typeof text !== 'string') {
return false;
}
const lines = text.split('\n');
for (let i = 0; i <= lines.length - 3; i++) {
const syllableCounts = lines.slice(i, i + 3).map(line => countSyllables(line));
if (syllableCounts[0] === 5 && syllableCounts[1] === 7 && syllableCounts[2] === 5) {
return true;
}
}
return false;
}
if (isHaiku(issueBody)) {
console.log('Haiku detected!');
try {
octokit.rest.issues.addLabels({
owner: issue.owner,
repo: issue.repo,
issue_number: issue.number,
labels: ['haiku 🐸']
});
} catch (error) {
console.error('Failed to add label:', error);
}
}