Skip to content

Commit bae8c7e

Browse files
author
Nick Balestra
committed
wip dev
1 parent 762880d commit bae8c7e

File tree

4 files changed

+425
-3
lines changed

4 files changed

+425
-3
lines changed

packages/cycle-scripts/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"cycle-scripts": "./index.js"
3131
},
3232
"dependencies": {
33+
"anser": "^1.2.7",
3334
"babel-core": "^6.23.1",
3435
"babel-loader": "^6.4.0",
3536
"babel-plugin-transform-react-jsx": "^6.23.0",
@@ -41,6 +42,8 @@
4142
"mkdirp": "^0.5.1",
4243
"mocha": "^3.1.2",
4344
"snabbdom-pragma": "^1.7.0",
45+
"sockjs-client": "^1.1.2",
46+
"strip-ansi": "^3.0.1",
4447
"webpack": "^2.2.1",
4548
"webpack-dev-server": "^2.4.2"
4649
}

packages/cycle-scripts/scripts/configs/webpack.config.dev.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
const path = require('path')
44
const HtmlWebpackPlugin = require('html-webpack-plugin')
55
const webpack = require('webpack')
6-
const devServer = require('./webpackDevServer.config')
76

87
module.exports = {
98
entry: {
109
main: [
11-
`webpack-dev-server/client?http://${devServer.host}:${devServer.port.toString()}`,
12-
'webpack/hot/dev-server', // 'webpack/hot/only-dev-server',
10+
require.resolve('../utils/webpackHotDevClient'),
11+
// `webpack-dev-server/client?http://${devServer.host}:${devServer.port.toString()}`,
12+
// 'webpack/hot/dev-server', // 'webpack/hot/only-dev-server',
1313
path.join(process.cwd(), 'src', 'index.js')
1414
]
1515
},
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
/**
2+
* Copyright (c) 2015-present, Facebook, Inc.
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the BSD-style license found in the
6+
* LICENSE file in the root directory of this source tree. An additional grant
7+
* of patent rights can be found in the PATENTS file in the same directory.
8+
*/
9+
10+
'use strict'
11+
12+
var Anser = require('anser')
13+
14+
// Color scheme inspired by https://chriskempson.github.io/base16/css/base16-github.css
15+
// var base00 = 'ffffff'; // Default Background
16+
var base01 = 'f5f5f5' // Lighter Background (Used for status bars)
17+
// var base02 = 'c8c8fa'; // Selection Background
18+
var base03 = '969896' // Comments, Invisibles, Line Highlighting
19+
// var base04 = 'e8e8e8'; // Dark Foreground (Used for status bars)
20+
var base05 = '333333' // Default Foreground, Caret, Delimiters, Operators
21+
// var base06 = 'ffffff'; // Light Foreground (Not often used)
22+
// var base07 = 'ffffff'; // Light Background (Not often used)
23+
var base08 = 'ed6a43' // Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
24+
// var base09 = '0086b3'; // Integers, Boolean, Constants, XML Attributes, Markup Link Url
25+
// var base0A = '795da3'; // Classes, Markup Bold, Search Text Background
26+
var base0B = '183691' // Strings, Inherited Class, Markup Code, Diff Inserted
27+
var base0C = '183691' // Support, Regular Expressions, Escape Characters, Markup Quotes
28+
// var base0D = '795da3'; // Functions, Methods, Attribute IDs, Headings
29+
var base0E = 'a71d5d' // Keywords, Storage, Selector, Markup Italic, Diff Changed
30+
// var base0F = '333333'; // Deprecated, Opening/Closing Embedded Language Tags e.g. <?php ?>
31+
32+
// Map ANSI colors from what babel-code-frame uses to base16-github
33+
// See: https://github.com/babel/babel/blob/e86f62b304d280d0bab52c38d61842b853848ba6/packages/babel-code-frame/src/index.js#L9-L22
34+
var colors = {
35+
reset: [base05, 'transparent'],
36+
black: base05,
37+
red: base08 /* marker, bg-invalid */,
38+
green: base0B /* string */,
39+
yellow: base08 /* capitalized, jsx_tag, punctuator */,
40+
blue: base0C,
41+
magenta: base0C /* regex */,
42+
cyan: base0E /* keyword */,
43+
gray: base03 /* comment, gutter */,
44+
lightgrey: base01,
45+
darkgrey: base03
46+
}
47+
48+
var anserMap = {
49+
'ansi-bright-black': 'black',
50+
'ansi-bright-yellow': 'yellow',
51+
'ansi-yellow': 'yellow',
52+
'ansi-bright-green': 'green',
53+
'ansi-green': 'green',
54+
'ansi-bright-cyan': 'cyan',
55+
'ansi-cyan': 'cyan',
56+
'ansi-bright-red': 'red',
57+
'ansi-red': 'red',
58+
'ansi-bright-magenta': 'magenta',
59+
'ansi-magenta': 'magenta'
60+
}
61+
62+
function ansiHTML (txt) {
63+
var arr = new Anser().ansiToJson(txt, {
64+
use_classes: true
65+
})
66+
67+
var result = ''
68+
var open = false
69+
for (var index = 0; index < arr.length; ++index) {
70+
var c = arr[index]
71+
var content = c.content
72+
var fg = c.fg
73+
74+
var contentParts = content.split('\n')
75+
for (var _index = 0; _index < contentParts.length; ++_index) {
76+
if (!open) {
77+
result += '<span data-ansi-line="true">'
78+
open = true
79+
}
80+
var part = contentParts[_index].replace('\r', '')
81+
var color = colors[anserMap[fg]]
82+
if (color != null) {
83+
result += '<span style="color: #' + color + ';">' + part + '</span>'
84+
} else {
85+
if (fg != null) console.log('Missing color mapping: ', fg)
86+
result += '<span>' + part + '</span>'
87+
}
88+
if (_index < contentParts.length - 1) {
89+
result += '</span>'
90+
open = false
91+
result += '<br/>'
92+
}
93+
}
94+
}
95+
if (open) {
96+
result += '</span>'
97+
open = false
98+
}
99+
return result
100+
}
101+
102+
module.exports = ansiHTML

0 commit comments

Comments
 (0)