[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [websites/inqlude] topics: Add data and tooling to deal with topics
From:       Cornelius Schumacher <schumacher () kde ! org>
Date:       2016-07-23 7:38:22
Message-ID: E1bQrVu-0004Ay-Kh () code ! kde ! org
[Download RAW message or body]

Git commit 2852c23cb24bf3a46a668e71029c968f9945740b by Cornelius Schumacher.
Committed on 24/06/2016 at 22:32.
Pushed by cschumac into branch 'master'.

Add data and tooling to deal with topics

A  +11   -0    topics/README.md
A  +11   -0    topics/list_topics
A  +28   -0    topics/list_topics.rb
A  +32   -0    topics/list_topics_spec.rb
A  +5    -0    topics/topics-test.csv
A  +202  -0    topics/topics.csv

http://commits.kde.org/websites/inqlude/2852c23cb24bf3a46a668e71029c968f9945740b

diff --git a/topics/README.md b/topics/README.md
new file mode 100644
index 0000000..9470e51
--- /dev/null
+++ b/topics/README.md
@@ -0,0 +1,11 @@
+This directory contains tools and data to deal with topics of libraries in
+Inqlude. Topics are used to categorize libraries. Each library has at least one
+topic, but can have more than one. There should be no topics with less than 4
+libraries and there should not be more than 20 topics.
+
+The file `topics.csv` contains the suggested assignment of topics to libraries.
+This data needs to be reflected in the manifest of `inqlude-data` to become
+effective.
+
+There is a command line tool to print a summary of the topics `list-topics`. It
+comes with test. Run `rspec .` in this directory to run them.
diff --git a/topics/list_topics b/topics/list_topics
new file mode 100755
index 0000000..0e6903e
--- /dev/null
+++ b/topics/list_topics
@@ -0,0 +1,11 @@
+#!/usr/bin/ruby
+
+require_relative "list_topics.rb"
+
+file = ARGV[0]
+if !file
+  STDERR.puts "Usage: list_topics.rb FILE"
+  exit 1
+end
+
+print_topics(read_topic_file(file))
diff --git a/topics/list_topics.rb b/topics/list_topics.rb
new file mode 100644
index 0000000..20c546c
--- /dev/null
+++ b/topics/list_topics.rb
@@ -0,0 +1,28 @@
+require "csv"
+
+def read_topic_file(file)
+  topics = {}
+  CSV.foreach(file) do |row|
+    row.each do |col|
+      lib = nil
+      row.each do |col|
+        if !lib
+          lib = col
+          next
+        end
+        if !col || col.empty?
+          next
+        end
+        topics[col] ||= []
+        topics[col].push(lib) unless topics[col].include?(lib)
+      end
+    end
+  end
+  topics
+end
+
+def print_topics(topics)
+  topics.sort.each do |topic, libs|
+    puts "#{topic} (#{libs.count}): #{libs.sort.join(", ")}"
+  end
+end
diff --git a/topics/list_topics_spec.rb b/topics/list_topics_spec.rb
new file mode 100644
index 0000000..7238019
--- /dev/null
+++ b/topics/list_topics_spec.rb
@@ -0,0 +1,32 @@
+require_relative "list_topics.rb"
+
+require "rspec"
+
+describe "list_topics" do
+  before(:all) do
+    @topics = read_topic_file("topics-test.csv")
+  end
+
+  describe "#read_topic_file" do
+    it "reads all topics" do
+      expect(@topics.keys).to eq(["One", "Three", "Two"])
+    end
+
+    it "reads libraries for topic" do
+      expect(@topics["One"]).to eq(["liba", "libd"])
+      expect(@topics["Two"]).to eq(["libd", "libb", "libe"])
+      expect(@topics["Three"]).to eq(["libc"])
+    end
+  end
+
+  describe "#print_topics" do
+    it "prints all topics" do
+      expected_output = <<EOT
+One (2): liba, libd
+Three (1): libc
+Two (3): libb, libd, libe
+EOT
+      expect { print_topics(@topics) }.to output(expected_output).to_stdout
+    end
+  end
+end
diff --git a/topics/topics-test.csv b/topics/topics-test.csv
new file mode 100644
index 0000000..13b9bb1
--- /dev/null
+++ b/topics/topics-test.csv
@@ -0,0 +1,5 @@
+liba,One,,
+libc,Three,,,,
+libd,One,Two,,,
+libb,Two
+libe,Two,
diff --git a/topics/topics.csv b/topics/topics.csv
new file mode 100644
index 0000000..6b549b6
--- /dev/null
+++ b/topics/topics.csv
@@ -0,0 +1,202 @@
+adctl,Mobile,QML
+attica,API
+avahi-qt,Bindings,Communication
+baloo,Development
+bluez-qt,Communication
+breeze-icons,Artwork
+ctk,Graphics,Widgets,Data
+cutelyst,Web
+cutereport,Printing
+cutetest,Development
+diff-match-patch,Text
+echonest,Multimedia,API
+enginio-qt,Data,API,QML
+exaro,Printing
+extra-cmake-modules,Development
+ff7tk,Data
+frameworkintegration,Desktop
+gcf,Development
+glc-lib,Graphics
+injeqt,Development
+jreen,Communication
+kactivities,Desktop
+kactivities-stats,Desktop
+karchive,Data
+kauth,Security,API
+kbookmarks,Web
+kcmutils,Desktop
+kcodecs,Text
+kcompletion,Text,Widgets
+kconfig,Development
+kconfigwidgets,Development,Widgets
+kcoreaddons,Text,Data
+kcrash,Development
+kdbusaddons,Desktop
+kdchart,Graphics
+kdeclarative,Desktop,QML
+kded,Desktop
+kdelibs,Desktop
+kdelibs4support,Development
+kdepimlibs,Data,Communication
+kdesignerplugin,Development
+kdesu,Security,Desktop
+kdewebkit,Web
+kdnssd,Bindings,Communication
+kdoctools,Development,Text
+kdreports,Printing
+kdsoap,API,Development
+kdtools,Widgets,Desktop
+kemoticons,Artwork
+kf5umbrella,Development
+kfileaudiopreview,Multimedia
+kfilemetadata,Data
+kglobalaccel,Desktop
+kguiaddons,Widgets
+khtml,Web
+ki18n,Development,Text
+kiconthemes,Artwork
+kidletime,Desktop
+kimageformats,Graphics,Data
+kinit,Desktop
+kio,Communication,Data
+kitemmodels,Development
+kitemviews,Widgets,Development
+kjobwidgets,Widgets
+kjs,Web,Scripting
+kjsembed,Web,Scripting
+klfbackend,Graphics,Data
+kmediaplayer,Multimedia
+knewstuff,Data,Communication
+knotifications,Desktop
+knotifyconfig,Desktop
+kode,Development,Data
+kpackage,Development
+kparts,Widgets
+kpeople,Communication,Data
+kplotting,Graphics
+kprintutils,Printing
+kpty,Communication
+kqoauth,Security,API
+kross,Scripting
+krunner,Desktop
+kservice,Development
+ktexteditor,Text,Widgets
+ktextwidgets,Text,Widgets
+kunitconversion,Data
+kwallet,Security
+kwayland,Desktop
+kwidgetsaddons,Widgets
+kwindowsystem,Desktop
+kxmlgui,Widgets
+kxmlrpcclient,Communication
+libcommuni,Communication
+libengsas,Widgets
+libkexiv2,Graphics,Bindings
+liblastfm,API,Multimedia
+libmm-qt,Communication,Bindings
+libnm-qt,Communication,Bindings
+libqinfinity,Communication
+libqtlua,Scripting
+libqxt,Development,Widgets
+libsystemd-qt,Bindings
+libtmdbqt,API,Data
+log4qt,Development,Logging
+log4qt-fork,Development,Logging
+lxqt_wallet,Security
+marble,Widgets
+mimetypes-qt4,Development
+modemmanager-qt,Communication,Bindings
+ncreport,Printing,Data
+neiasound,Multimedia,Bindings
+networkmanager-qt,Communication,Bindings
+noron,Development
+novile,Development,Text
+nut,Data
+o2,Security,Bindings
+osgqtquick,Graphics,QML
+oxygen-icons5,Artwork
+packagekit-qt,Bindings
+phonon,Multimedia
+plasma-framework,Desktop
+polkit-qt-1,Bindings
+poppler-qt,Bindings
+pythonqt,Bindings
+q7goodies,Widgets
+qanmenubar,QML
+qaudiocoder,Multimedia
+qca,Security
+qcustomplot,Graphics
+qdatacube,Data,Widgets
+qdbf,Data
+qdecimal,Data
+qdjango,Web
+qextserialport,Communication
+qfb,API
+qicstable,Widgets,Data
+qimageblitz,Graphics
+qjson,Data
+qjsonrpc,Data,Communication
+qlogsystem,Development,Logging
+qoauth,Security,API
+qscintilla,Text
+qserialdevice,Communication
+qserialport,Communication
+qsint,Widgets
+qslog,Logging,Development
+qsqlmigrator,Data
+qt-certificate-Addons,Security
+qt-gstreamer,Bindings,Multimedia
+qtargparser,Development
+qtav,Multimedia
+qtdropbox,API
+qtermwidget,Widgets
+qtffmpegwrapper,Multimedia
+qtftp,Communication
+qtgamepad,Communication
+qtgooglespeech,API
+qthttp,Web
+qtilities,Logging,Widgets
+qtinstallerframework,Development
+qtioccontainer,Development
+qtitanchart,Graphics
+qtitanribbon,Desktop
+qtinstaller,Development
+qtkeychain,Security
+qtmodeling,Development
+qtoolbox,Data,Logging
+qtoptimization,Development
+qtorm,Web,Data
+qtrest,Communication,API
+qtrpt,Printing
+qtspeech,Bindings,Multimedia
+qtuio,Mobile
+qtuiotouch,Mobile
+qtvkontakte,Mobile
+qtwebapp,Web
+qtwebkit,Web
+qtwebsockets,Communication
+qtweetlib,Communication
+qtxlsx,Data
+quazip,Data
+quickcross,QML
+quickflux,Communication
+quickpromise,QML
+quickproperties,QML
+quickqanava,Graphics,QML
+qwt,Widgets,Graphics
+qwtplot3d,Graphics
+qxmpp,Communication
+qxorm,Data
+qyoto,Bindings
+snorenotify,Communication
+solid,Development
+sonnet,Text
+soprano,Data
+soqt,Graphics,Bindings
+sqlate,Data
+tasks,Development
+telepathy-qt,Bindings,Communication
+threadweaver,Development
+treefrog,Web
+tufao,Web
+vlc-qt,Bindings,Multimedia

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic