Скрипт подсчета строк в проекте

mbaev 24.10.2016, 19:19

С кружкой кофе на столе, решил подготовить пост к пятнице. Но для этого мне нужен скрипт, который "склеит" все файлы из указанной папки. А после этого посчитает количество строк в получившемся холсте. Особенность скрипта заключается в том, что он группирует сумму строк из файлов по расширению.

В функции associations вы можете сформировать мапинг, в соответствии с которым, будет выведен на экран общий подсчет.

Если вдруг, по необъяснимым причинам, вы все еще пользуетесь версией php ниже 5.4, то нужно заменить объявление массива на классический вариант. Подробнее...

  1. function associations() {
  2.   return [
  3.     'Text'       => ['txt', 'csv', 'md'],
  4.     'PHP'        => ['php'],
  5.     'JavaScript' => ['js', 'coffee'],
  6.     'CSS'        => ['css', 'sass', 'scss', 'less'],
  7.     'Images'     => ['jpg', 'jpeg', 'gif', 'png', 'ico', 'icon'],
  8.   ];
  9. }

Да, да! Он может подсчитать количество строк в изображении. Работает это также, как если бы вы открыли изображение в текстовом редакторе.

К делу. Заранее прошу прощения за мое немногословие в комментариях в скрипте, я накидал его "на коленке".

 
Код здесь!

Как это работает

Предположим у вас уже есть рабочий php-сервер. Например, Denwer или Open Server.

  1. Берем весь код из блока выше
  2. Помещаем его в отдельный файл. Например, index.php
  3. Вписываем полный путь до папки, в которой лежат файлы для подсчета, в переменную $dir, в начале скрипта.
  4. Пишем свой маппинг в функции associations, где ключ - это человеко-понятный заголовок группы, а значение - это массив расширений, которые должны входит в эту группу. Можно оставить пустым ( return array(); ), тогда будет выведен список расширений и общее количество строк в них.
  5. Запускаем файл index.php в браузере и любуемся.

P.S.
В консоли тоже должно работать

  1. cd path/to/dir/with/index-file
  2. php index.php

Результат

Возьмем любой проект с гихаба. Например, bootstrap-datepicker и положим его в папку datepicker. Пишу путь до папки datepicker, который у меня такой:

  1. $dir = 'D:\Servers\PHP\domains\datepicker';

Запускаем скрипт и

 
смотрим результат

Total: 19401

  • Text - 499
    • txt - 1
    • md - 498
  • PHP -
  • JavaScript - 11893
    • js - 11893
  • CSS - 3420
    • css - 2656
    • less - 764
  • Images - 1027
    • png - 1027
  • Other - 2562
    • editorconfig - 11
    • gitignore - 10
    • yml - 9
    • license - 202
    • json - 99
    • map - 4
    • makefile - 153
    • html - 442
    • py - 249
    • rst - 1119
    • bat - 190
    • jshintrc - 33
    • jscsrc - 22
    • csslintrc - 19
Profile picture for user Гость

bumble , ,

PHP -

Не очень так смотрится.
Нолик просится ))

  1. function count_by_type() {
  2.   global $result;
  3.   $count_by_type[$type] = 0; // По идее - тут добавить нужно
  4.   $count_by_type = [
  5.     'total' => 0,
  6.   ];
  7.   foreach ($result as $type => $sizes) {
  8.     foreach (array_filter($sizes) as $ext => $size) {
  9.       $count_by_type[$type] += $size;
  10.       $count_by_type['total'] += $size;
  11.     }
  12.   }
  13.   return $count_by_type;
  14. }

 

Profile picture for user Гость

bumble , ,

  1.     function count_by_type() {
  2.       global $result;
  3.       $count_by_type = [
  4.         'total' => 0,
  5.       ];
  6.       foreach ($result as $type => $sizes) {
  7.         $count_by_type[$type] = 0; // Точнее тут ))
  8.         foreach (array_filter($sizes) as $ext => $size) {
  9.           $count_by_type[$type] += $size;
  10.           $count_by_type['total'] += $size;
  11.         }
  12.       }
  13.       return $count_by_type;
  14.     }