Explorar el Código

Convert accented chars in slugs (instead of ignoring)

Benoît Hubert hace 7 años
padre
commit
fb703138ce

+ 17 - 7
react-tuto/gulpfile.js

@@ -15,14 +15,24 @@ const path = require('path');
 const es = require('event-stream');
 const Promise = require('bluebird');
 
-function slugify(text)
+function slugify(str)
 {
-  return text.toString().toLowerCase()
-    .replace(/\s+/g, '-')           // Replace spaces with -
-    .replace(/[^\w\-]+/g, '')       // Remove all non-word chars
-    .replace(/\-\-+/g, '-')         // Replace multiple - with single -
-    .replace(/^-+/, '')             // Trim - from start of text
-    .replace(/-+$/, '');            // Trim - from end of text
+  str = str.replace(/^\s+|\s+$/g, ''); // trim
+  str = str.toLowerCase();
+
+  // remove accents, swap ñ for n, etc
+  var from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;";
+  var to   = "aaaaeeeeiiiioooouuuunc------";
+
+  for (var i=0, l=from.length ; i<l ; i++)
+    str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
+
+
+  str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
+    .replace(/\s+/g, '-') // collapse whitespace and replace by -
+    .replace(/-+/g, '-'); // collapse dashes
+
+  return str;      // Trim - from end of text
 }
 
 Promise.promisifyAll(fs);

+ 1 - 11
react-tuto/src/index.js

@@ -23,22 +23,13 @@ class App extends React.Component {
   render() {
     return (
       <div>
-        <Page title={markdown[0].items[0].title} md={markdown[0].items[0].content} />
+        <h1>Home</h1>
       </div>
 
     );
   }
 }
 
-class MarkdownPage extends React.Component {
-  render() {
-    return (
-      <div>
-        <Page title={markdown[0].items[1].title} md={markdown[0].items[1].content} />
-      </div>
-    );
-  }
-}
 
 class Section extends React.Component {
   render() {
@@ -106,7 +97,6 @@ ReactDOM.render(
         </ul>
         <Switch>
           <Route exact path="/" component={App} />
-          <Route path="/md" component={MarkdownPage} />
           {
             markdown.map(getSectionRoutes)
           }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
react-tuto/src/markdown.json


react-tuto/src/markdown/part1/1. D'abord un peu de HTML.md → react-tuto/src/markdown/1. Les bases/1. D'abord un peu de HTML.md


react-tuto/src/markdown/part1/2. Du JavaScript maintenant.md → react-tuto/src/markdown/1. Les bases/2. Du JavaScript maintenant.md


react-tuto/src/markdown/part2/01. Pouet.md → react-tuto/src/markdown/2. Trucs avancés/01. Pouet.md