Wondering what’s next for npm?Check out our public roadmap! »

    @albertj97/testnpmmodules

    1.0.7 • Public • Published

    Eloquent JavaScript. Chapter 6: The Secret Life of Objects. Section Laying out a table

    npm version

    Build Status

    Tarea

    Se ha desarrollado la clase StretchCell que permite la representación de celdas de tipo "inner" y con un alto y ancho predefinido, para ello se ha creado una clase nueva que integra tres métodos.

    • Este método devuelve el máximo entre el valor que se le especifico como height o, en caso de ser este menor, un espacio de al menos la longitud del texto que represente la celda. Recordemos que inner es un objeto de tipo TCell.
     minHeight() {
        return Math.max(this.height, this.inner.minHeight());
      };
    • De igual forma pasaría con el método:
      minHeight() {
        return this.text.length;
      };
    • Por último se añadió el método draw para este tipo de celda, que lo que hace es llamar a la función draw de TCell, o el método draw del objeto que se le pase.
    draw(width, height) {
        return this.inner.draw(width, height);
      };
    • Por último, en la modificación se añadió el siguiente código. Lo que hace es que cuando detecta que es un objeto de tipo StretchCell, se construye la celda StretchCell pasándole el nombre, el width y el height, en caso de que no lo sea, se reconoce el tipo de celda, y se le pasa el nombre para que se construya, pues la única celda que recive 3 parámetros es StretchCell
    else if(value.constructor.name === 'Object'){
              if(value.type === 'StretchCell')
                return new Classes[value.type](new TCell(value.params[0]), value.params[1], value.params[2]);
     
              return new Classes[value.type](row.name);

    Introduction

    Example corresponds to the section Laying out a table of Chapter 6 The Secret Life of Objects, book Eloquent javaScript

    Files:

    ackage.json          - configuration and dependencies
    
    gulpfile.js           - test: run mocha tests
                          - debugger: run the debbugger
                          - run: run the program
    
    src                   - source folder
      input.json          - input file
      main.js             - main program
      Cell.js             - class cell
      RCell.js            - class rcell
      UnderlinedCell.js   - class underlinedcell
      s-cell.js           - class scell
      Table.js            - class table
    
    test                  - mocha test
      test.js
    

    Description

    This example consist in a program that, given an array of arrays of table cells in json format, builds up a string that contains a nicely laid out table.

    The src folder has the input file and the different classes, the main, all types of cell and the table. Also, in the test folder has the file the file with the developed tests.

    Example of input used:

    ~/ejs-chapter-6-oop-KevMCh $ cat src/input.json
     
    [
      {"name": "Kilimanjaro\nMontaña mágica", "height": 5895, "country": "Tanzania"},
      {"name": "Everest", "height": 8848, "country": "Nepal\nPaís lejano"},
      {"name": "Mount Fuji", "height": 3776, "country": "Japan"},
      {"name": "Mont Blanc", "height": 4808, "country": "Italy/France"},
      {"name": "Vaalserberg", "height": 323, "country": "Netherlands"},
      {"name": "Denali", "height": 6168, "country": "United States"},
      {"name": "Popocatepetl", "height": 5465, "country": "Mexico"}
    ]

    If you want to run the code the different tasks is available in the gulp file.

    • Run the program with the debugger.
    • Run the program with the standard input.
    • Run the tests.

    Final result:

    ~/ejs-chapter-6-oop-KevMCh $ gulp run
    [12:42:05] Using gulpfile ~/Desktop/ejs-chapter-6-oop-KevMCh/gulpfile.js
    [12:42:05] Starting 'run'...
    name           height country      
    -------------- ------ -------------
    Kilimanjaro      5895 Tanzania     
    Montaña mágica                     
    Everest          8848 Nepal        
                          País lejano  
    Mount Fuji       3776 Japan        
    Mont Blanc       4808 Italy/France
    Vaalserberg       323 Netherlands  
    Denali           6168 United States
    Popocatepetl     5465 Mexico       
    [12:42:05] Finished 'run' after 84 ms

    Install

    npm i @albertj97/testnpmmodules

    DownloadsWeekly Downloads

    9

    Version

    1.0.7

    License

    MIT

    Unpacked Size

    1.15 MB

    Total Files

    65

    Last publish

    Collaborators

    • avatar