diff --git a/Gemfile.lock b/Gemfile.lock index 34f63ac4..ffaa26e8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,13 +1,14 @@ GEM remote: http://rubygems.org/ specs: - activesupport (4.2.10) - i18n (~> 0.7) + activesupport (6.0.2.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.5.2) - public_suffix (>= 2.0.2, < 4.0) + zeitwerk (~> 2.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) coffee-script (2.4.1) coffee-script-source execjs @@ -15,8 +16,8 @@ GEM colorator (1.1.0) commonmarker (0.17.13) ruby-enum (~> 0.5) - concurrent-ruby (1.1.4) - dnsruby (1.61.2) + concurrent-ruby (1.1.5) + dnsruby (1.61.3) addressable (~> 2.5) em-websocket (0.5.1) eventmachine (>= 0.12.9) @@ -25,33 +26,32 @@ GEM ffi (>= 1.3.0) eventmachine (1.2.7) execjs (2.7.0) - faraday (0.15.4) + faraday (1.0.0) multipart-post (>= 1.2, < 3) - ffi (1.10.0) + ffi (1.11.3) forwardable-extended (2.6.0) - gemoji (3.0.0) - github-pages (197) - activesupport (= 4.2.10) + gemoji (3.0.1) + github-pages (203) github-pages-health-check (= 1.16.1) - jekyll (= 3.7.4) - jekyll-avatar (= 0.6.0) + jekyll (= 3.8.5) + jekyll-avatar (= 0.7.0) jekyll-coffeescript (= 1.1.1) - jekyll-commonmark-ghpages (= 0.1.5) + jekyll-commonmark-ghpages (= 0.1.6) jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.11.0) + jekyll-feed (= 0.13.0) jekyll-gist (= 1.5.0) jekyll-github-metadata (= 2.12.1) - jekyll-mentions (= 1.4.1) - jekyll-optional-front-matter (= 0.3.0) + jekyll-mentions (= 1.5.1) + jekyll-optional-front-matter (= 0.3.2) jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.2.0) - jekyll-redirect-from (= 0.14.0) - jekyll-relative-links (= 0.6.0) - jekyll-remote-theme (= 0.3.1) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.15.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.1) jekyll-sass-converter (= 1.5.2) - jekyll-seo-tag (= 2.5.0) - jekyll-sitemap (= 1.2.0) - jekyll-swiss (= 0.4.0) + jekyll-seo-tag (= 2.6.1) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) jekyll-theme-architect (= 0.1.1) jekyll-theme-cayman (= 0.1.1) jekyll-theme-dinky (= 0.1.1) @@ -61,19 +61,18 @@ GEM jekyll-theme-midnight (= 0.1.1) jekyll-theme-minimal (= 0.1.1) jekyll-theme-modernist (= 0.1.1) - jekyll-theme-primer (= 0.5.3) + jekyll-theme-primer (= 0.5.4) jekyll-theme-slate (= 0.1.1) jekyll-theme-tactile (= 0.1.1) jekyll-theme-time-machine (= 0.1.1) - jekyll-titles-from-headings (= 0.5.1) - jemoji (= 0.10.2) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.11.1) kramdown (= 1.17.0) - liquid (= 4.0.0) - listen (= 3.1.5) + liquid (= 4.0.3) mercenary (~> 0.3) - minima (= 2.5.0) + minima (= 2.5.1) nokogiri (>= 1.10.4, < 2.0) - rouge (= 2.2.1) + rouge (= 3.13.0) terminal-table (~> 1.4) github-pages-health-check (1.16.1) addressable (~> 2.3) @@ -81,13 +80,13 @@ GEM octokit (~> 4.0) public_suffix (~> 3.0) typhoeus (~> 1.3) - html-pipeline (2.10.0) + html-pipeline (2.12.3) activesupport (>= 2) - nokogiri (>= 1.10.4) + nokogiri (>= 1.4) http_parser.rb (0.6.0) i18n (0.9.5) concurrent-ruby (~> 1.0) - jekyll (3.7.4) + jekyll (3.8.5) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -100,49 +99,50 @@ GEM pathutil (~> 0.9) rouge (>= 1.7, < 4) safe_yaml (~> 1.0) - jekyll-avatar (0.6.0) - jekyll (~> 3.0) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) jekyll-coffeescript (1.1.1) coffee-script (~> 2.2) coffee-script-source (~> 1.11.1) - jekyll-commonmark (1.2.0) + jekyll-commonmark (1.3.1) commonmarker (~> 0.14) - jekyll (>= 3.0, < 4.0) - jekyll-commonmark-ghpages (0.1.5) + jekyll (>= 3.7, < 5.0) + jekyll-commonmark-ghpages (0.1.6) commonmarker (~> 0.17.6) - jekyll-commonmark (~> 1) - rouge (~> 2) + jekyll-commonmark (~> 1.2) + rouge (>= 2.0, < 4.0) jekyll-default-layout (0.1.4) jekyll (~> 3.0) - jekyll-feed (0.11.0) - jekyll (~> 3.3) + jekyll-feed (0.13.0) + jekyll (>= 3.7, < 5.0) jekyll-gist (1.5.0) octokit (~> 4.2) jekyll-github-metadata (2.12.1) jekyll (~> 3.4) octokit (~> 4.0, != 4.4.0) - jekyll-mentions (1.4.1) + jekyll-mentions (1.5.1) html-pipeline (~> 2.3) - jekyll (~> 3.0) - jekyll-optional-front-matter (0.3.0) - jekyll (~> 3.0) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) jekyll-paginate (1.1.0) - jekyll-readme-index (0.2.0) - jekyll (~> 3.0) - jekyll-redirect-from (0.14.0) - jekyll (~> 3.3) - jekyll-relative-links (0.6.0) - jekyll (~> 3.3) - jekyll-remote-theme (0.3.1) - jekyll (~> 3.5) - rubyzip (>= 1.2.1, < 3.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.15.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.1) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + rubyzip (>= 1.3.0) jekyll-sass-converter (1.5.2) sass (~> 3.4) - jekyll-seo-tag (2.5.0) - jekyll (~> 3.3) - jekyll-sitemap (1.2.0) - jekyll (~> 3.3) - jekyll-swiss (0.4.0) + jekyll-seo-tag (2.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) jekyll-theme-architect (0.1.1) jekyll (~> 3.5) jekyll-seo-tag (~> 2.0) @@ -170,8 +170,8 @@ GEM jekyll-theme-modernist (0.1.1) jekyll (~> 3.5) jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.5.3) - jekyll (~> 3.5) + jekyll-theme-primer (0.5.4) + jekyll (> 3.5, < 5.0) jekyll-github-metadata (~> 2.9) jekyll-seo-tag (~> 2.0) jekyll-theme-slate (0.1.1) @@ -183,63 +183,66 @@ GEM jekyll-theme-time-machine (0.1.1) jekyll (~> 3.5) jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.1) - jekyll (~> 3.3) - jekyll-watch (2.1.2) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) listen (~> 3.0) - jemoji (0.10.2) + jemoji (0.11.1) gemoji (~> 3.0) html-pipeline (~> 2.2) - jekyll (~> 3.0) + jekyll (>= 3.0, < 5.0) kramdown (1.17.0) - liquid (4.0.0) - listen (3.1.5) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) + liquid (4.0.3) + listen (3.2.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) mini_portile2 (2.4.0) - minima (2.5.0) - jekyll (~> 3.5) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.11.3) - multipart-post (2.0.0) - nokogiri (>= 1.10.4) + minitest (5.13.0) + multipart-post (2.1.1) + nokogiri (1.10.7) mini_portile2 (~> 2.4.0) - octokit (4.13.0) + octokit (4.15.0) + faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (3.0.3) + public_suffix (3.1.1) rb-fsevent (0.10.3) - rb-inotify (0.10.0) + rb-inotify (0.10.1) ffi (~> 1.0) - rouge (2.2.1) + rouge (3.13.0) ruby-enum (0.7.2) i18n - ruby_dep (1.5.0) - rubyzip (1.2.2) + rubyzip (2.0.0) safe_yaml (1.0.5) - sass (3.7.3) + sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) thread_safe (0.3.6) typhoeus (1.3.1) ethon (>= 0.9.0) - tzinfo (1.2.5) + tzinfo (1.2.6) thread_safe (~> 0.1) - unicode-display_width (1.4.1) + unicode-display_width (1.6.0) + zeitwerk (2.2.2) PLATFORMS ruby DEPENDENCIES github-pages + +BUNDLED WITH + 2.1.2 diff --git a/_data/projects.yml b/_data/projects.yml new file mode 100644 index 00000000..b263acce --- /dev/null +++ b/_data/projects.yml @@ -0,0 +1,280 @@ +- category: Web Server + description: HTTP web servers + projects: + - description: A minimal, idiomatic Scala interface for HTTP + github: https://github.com/http4s/http4s + title: http4s + stars: 1727 + homepage: https://http4s.org/ + - title: Finch + homepage: https://finagle.github.io/finch + stars: 1432 + description: Scala combinator library for building Finagle HTTP services + github: https://github.com/finagle/finch +- category: HTTP Client + description: HTTP web clients. + projects: + - github: https://github.com/47deg/fetch + stars: 410 + description: Simple & Efficient data access for Scala and Scala.js + title: fetch + homepage: http://47deg.github.io/fetch/ + - stars: 167 + github: https://github.com/pepegar/hammock + title: Hammock + homepage: http://pepegar.com/hammock + description: Purely functional HTTP client + - github: https://github.com/http4s/http4s + description: A minimal, idiomatic Scala interface for HTTP + title: http4s + homepage: https://http4s.org/ + stars: 1727 +- category: JSON + description: Working with JSON. + projects: + - description: Automatic argonaut codec derivation with shapeless + stars: 93 + title: argonaut-shapeless + github: https://github.com/alexarchambault/argonaut-shapeless +- category: Functional Reactive Programming + description: Modelling effects, event streams, etc. + projects: + - description: The IO monad for Scala + github: https://github.com/typelevel/cats-effect + homepage: https://typelevel.org/cats-effect/ + stars: 842 + title: cats-effect + - title: fs2 + homepage: https://fs2.io + stars: 1577 + github: https://github.com/functional-streams-for-scala/fs2 + description: Compositional, streaming I/O library for Scala + - description: Asynchronous, Reactive Programming for Scala and Scala.js. + stars: 1627 + title: monix + homepage: https://monix.io + github: https://github.com/monix/monix +- category: Database + description: Integrating with databases. + projects: + - title: doobie + stars: 1587 + description: Functional JDBC layer for Scala. + github: https://github.com/tpolecat/doobie + homepage: '' +- category: Front End + description: Front end development. + projects: + - stars: 325 + title: OutWatch + github: https://github.com/OutWatch/outwatch + homepage: http://outwatch.github.io + description: A purely functional and reactive UI framework based on Monix and + VirtualDom +- category: Configuration + description: Handle application configuration. + projects: + - description: Functional Configurations for Scala + github: https://github.com/vlovgr/ciris + title: Ciris + homepage: https://cir.is + stars: 269 + - title: Extruder + github: https://github.com/janstenpickle/extruder + description: Populate Case Classes From Any Data Source + homepage: https://janstenpickle.github.io/extruder/ + stars: 75 + - stars: 923 + description: A boilerplate-free library for loading configuration files + title: PureConfig + homepage: https://pureconfig.github.io + github: https://github.com/pureconfig/pureconfig +- category: Serialization + description: Serializing and deserializing data. + projects: + - description: Scala combinator library for working with binary data + homepage: http://scodec.org + stars: 658 + github: https://github.com/scodec/scodec + title: scodec +- category: Science and Data Analysis + projects: + - homepage: https://twitter.github.io/algebird + github: https://github.com/twitter/algebird + stars: 1922 + title: Algebird + description: Abstract Algebra for Scala + - description: 'coulomb: a statically typed unit analysis library for Scala' + title: coulomb + homepage: https://github.com/erikerlandson/coulomb#coulomb + stars: 75 + github: https://github.com/erikerlandson/coulomb + - github: https://github.com/typelevel/frameless + stars: 603 + title: Frameless + description: Expressive types for Spark. + homepage: '' + - description: A dimensional analysis library based on dependent types + stars: 187 + title: Libra + github: https://github.com/to-ithaca/libra + - homepage: '' + title: spire + stars: 1551 + github: https://github.com/typelevel/spire + description: Powerful new number types and numeric abstractions for Scala. + - stars: 676 + description: The Scala API for Quantities, Units of Measure and Dimensional Analysis + github: https://github.com/typelevel/squants + homepage: https://www.squants.com + title: squants +- category: Testing + description: Test frameworks and test utilities. + projects: + - description: Scalatest binding for Cats + stars: 53 + title: cats-scalatest + github: https://github.com/IronCoreLabs/cats-scalatest + - stars: 1598 + title: ScalaCheck + homepage: www.scalacheck.org + github: https://github.com/typelevel/scalacheck + description: Property-based testing for Scala + - homepage: '' + description: Generation of arbitrary case classes / ADTs instances with scalacheck + and shapeless + stars: 195 + title: scalacheck-shapeless + github: https://github.com/alexarchambault/scalacheck-shapeless + - title: Specs2 + github: https://github.com/etorreborre/specs2 + homepage: http://specs2.org + description: Software Specifications for Scala + stars: 674 + - github: https://github.com/typelevel/discipline + description: Flexible law checking for Scala + title: discipline + stars: 244 + homepage: http://typelevel.org +- category: Linked Data + projects: + - description: Banana RDF + stars: 252 + title: banana-rdf + github: https://github.com/banana-rdf/banana-rdf +- category: Generic Programming + projects: + - description: Generic programming for Scala + github: https://github.com/milessabin/shapeless + title: shapeless + stars: 2919 + homepage: '' +- category: Command Line + description: Command line applications. + projects: + - homepage: http://monovore.com/decline/ + stars: 325 + description: A composable command-line parser for Scala. + github: https://github.com/bkirwi/decline + title: decline +- category: Extensions + description: Language extensions. + projects: + - github: https://github.com/typelevel/cats + description: Lightweight, modular, and extensible library for functional programming. + stars: 3718 + homepage: http://typelevel.org/cats/ + title: cats + - github: https://github.com/typelevel/cats-tagless + stars: 194 + homepage: https://typelevel.org/cats-tagless/ + title: cats-tagless + description: Library of utilities for tagless final encoded algebras + - stars: 434 + homepage: '' + github: https://github.com/atnos-org/eff + title: eff + description: Eff monad for cats - http://atnos-org.github.io/eff + - github: https://github.com/typelevel/kittens + description: Automatic type class derivation for Cats + title: kittens + homepage: '' + stars: 362 + - stars: 1188 + title: monocle + description: Optics library for Scala + github: https://github.com/julien-truffaut/Monocle + homepage: http://julien-truffaut.github.io/Monocle/ + - description: A small companion to cats + stars: 212 + title: mouse + github: https://github.com/typelevel/mouse + - homepage: '' + description: Simple refinement types for Scala + stars: 1043 + title: refined + github: https://github.com/fthomas/refined + - homepage: '' + github: https://github.com/fthomas/singleton-ops + stars: 129 + description: Operations for primitive and String singleton types + title: singleton-ops +- category: Misc + description: Projects which don't fit a specific category. + projects: + - description: Experimental project to lay out basic algebra type classes + stars: 360 + homepage: https://typelevel.org/algebra/ + title: algebra + github: https://github.com/typelevel/algebra + - description: an implementation of Wadler's a prettier printer + stars: 141 + title: paiges + github: https://github.com/typelevel/paiges + - homepage: '' + github: https://github.com/fthomas/scala-steward + description: ':robot: A bot that helps you keeping your Scala projects up-to-date' + stars: 608 + title: scala-steward + - description: The easy way to learn Scala. + title: scala-exercises + homepage: https://www.scala-exercises.org + stars: 2037 + github: https://github.com/scala-exercises/scala-exercises + - homepage: http://scoverage.org + stars: 346 + description: Scoverage Scala Code Coverage Core Libs + github: https://github.com/scoverage/scalac-scoverage-plugin + title: Scoverage +- category: Macros and Compiler Plugins + projects: + - github: https://github.com/milessabin/export-hook + stars: 89 + title: export-hook + homepage: '' + description: Minimal infrastructure for type class providers to support the inclusion + of derived, subclass and other orphan instances in their implicit scope. + - description: macro for summoning implicit values + stars: 90 + title: imp + github: https://github.com/non/imp + - homepage: '' + title: kind-projector + github: https://github.com/typelevel/kind-projector + description: Compiler plugin for making type lambdas (type projections) easier + to write + stars: 716 + - description: macro-compat is a small library which allows you to compile macros + with Scala 2.10.x which are written to the Scala 2.11/2 macro API. + stars: 83 + title: macro-compat + github: https://github.com/milessabin/macro-compat + - description: First class syntax support for type classes in Scala + stars: 856 + title: simulacrum + github: https://github.com/typelevel/simulacrum + - homepage: '' + title: TwoTails + github: https://github.com/wheaties/TwoTails + description: A Scala compiler plugin for mutual tail recursion + stars: 83 diff --git a/_projects/algebra.md b/_projects/algebra.md deleted file mode 100644 index d2489086..00000000 --- a/_projects/algebra.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "algebra" -category: "Basic type classes" -description: "A solid foundation of basic algebra type classes such as groups and rings aiming to serve as a consistent foundation for multiple libraries." -github: "https://github.com/non/algebra" ---- diff --git a/_projects/catalysts.md b/_projects/catalysts.md deleted file mode 100644 index 714fa2c3..00000000 --- a/_projects/catalysts.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "catalysts" -category: "Project building blocks" -description: "A small library of building blocks to help build platform independent Scala projects with SBT." -github: "https://github.com/typelevel/catalysts" ---- diff --git a/_projects/cats.md b/_projects/cats.md deleted file mode 100644 index ec63e9d3..00000000 --- a/_projects/cats.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: post -title: "Cats" -category: "Functional Programming" -description: "A library intended to provide abstractions for functional programming in Scala, leveraging its unique features. Design goals are approachability, modularity, documentation and efficiency." -permalink: "https://typelevel.org/cats/" -github: "https://github.com/typelevel/cats" - -core: true -extensions: - - title: Cats-Effect - description: "The IO Monad for Scala, plus type classes for general effect types." - link: "https://typelevel.org/cats-effect/" - - title: "Cats MTL" - description: "Monad transformers made easy" - link: "https://typelevel.org/cats-mtl/" - - title: "Cats Tagless" - description: "A library of utilities for tagless final algebras" - link: "https://typelevel.org/cats-tagless/" - - title: "Alleycats" - description: "Lawless classes & illegal instances" - link: "https://github.com/typelevel/cats" - - title: "Kittens" - description: "Automatic type class derivation" - link: "https://github.com/milessabin/kittens" ---- diff --git a/_projects/discipline.md b/_projects/discipline.md deleted file mode 100644 index 48f91d3f..00000000 --- a/_projects/discipline.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "discipline" -category: "Flexible law checking" -description: "Originally intended for internal use in spire, this library helps libraries declaring type classes to precisely state the laws which instances need to satisfy, and takes care of not checking derived laws multiple times." -github: "https://github.com/typelevel/discipline" ---- diff --git a/_projects/doobie.md b/_projects/doobie.md deleted file mode 100644 index 044b69fc..00000000 --- a/_projects/doobie.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "doobie" -category: "Principled database access" -description: "A pure functional JDBC layer for Scala. It is not an ORM, nor is it a relational algebra; it just provides a principled way to construct programs (and higher-level libraries) that use JDBC." -github: "https://github.com/tpolecat/doobie" ---- diff --git a/_projects/eff.md b/_projects/eff.md deleted file mode 100644 index 7b9bf176..00000000 --- a/_projects/eff.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: post -title: "eff" -category: "effects" -description: "Extensible effects are an alternative to monad transformers for computing with effects in a functional way. This library is based on the “free-er” monad and an “open union” of effects described by Oleg Kiselyov in “Freer monads, more extensible effects”" - -permalink: "http://atnos-org.github.io/eff" -github: "https://github.com/atnos-org/eff" ---- diff --git a/_projects/frameless.md b/_projects/frameless.md deleted file mode 100644 index 22bfbf82..00000000 --- a/_projects/frameless.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "Frameless" -category: "Typeful Spark" -description: "Frameless is a library for working with Spark using more expressive types." -github: "https://github.com/typelevel/frameless" ---- diff --git a/_projects/fs2.md b/_projects/fs2.md deleted file mode 100644 index 059f71a1..00000000 --- a/_projects/fs2.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "fs2" -category: "Stream Processing" -description: "FS2 is a library for purely functional, effectful, and polymorphic stream processing library in the Scala programming language. Its design goals are compositionality, expressiveness, resource safety, and speed. The name is a modified acronym for Functional Streams for Scala (FSS, or FS2)." -github: "https://github.com/functional-streams-for-scala/fs2" ---- diff --git a/_projects/monix.md b/_projects/monix.md deleted file mode 100644 index 4e36dc1e..00000000 --- a/_projects/monix.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: post -title: "Monix" -category: "Asynchronous, Reactive Programming" -description: "High-performance library for composing asynchronous, event-based programs, exposing a Reactive Streams implementation along with primitives for dealing with concurrency and side-effects." -github: "https://github.com/monix/monix" -permalink: "https://monix.io" ---- diff --git a/_projects/monocle.md b/_projects/monocle.md deleted file mode 100644 index 3c7972dd..00000000 --- a/_projects/monocle.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "Monocle" -category: "Lenses for Scala" -description: "Strongly inspired by Haskell's lens library, Monocle is an Optics library where Optics gather the concepts of Lens, Traversal, Optional, Prism and Iso." -github: "https://github.com/julien-truffaut/Monocle" ---- diff --git a/_projects/refined.md b/_projects/refined.md deleted file mode 100644 index ccb53df3..00000000 --- a/_projects/refined.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "refined" -category: "Constraints on types" -description: "Tools for refining types with type-level predicates which constrain the set of values described by the refined type, for example restricting to positive or negative numbers." -github: "https://github.com/fthomas/refined" ---- diff --git a/_projects/scala.md b/_projects/scala.md deleted file mode 100644 index c14621d2..00000000 --- a/_projects/scala.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: post -title: "Scala" -category: "Our fork of the Scala compiler" -description: "We wish to work with all stakeholders in the Scala ecosystem to safeguard the interests of the entire Scala community." -github: "https://github.com/typelevel/scala" -permalink: "https://typelevel.org/scala/" ---- diff --git a/_projects/scalacheck.md b/_projects/scalacheck.md deleted file mode 100644 index 98aec5f2..00000000 --- a/_projects/scalacheck.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: post -title: "ScalaCheck" -category: "Property checking" -description: "ScalaCheck is a library for automated property-based testing. It contains generators for randomized test data and combinators for properties." -github: "https://github.com/rickynils/scalacheck" -permalink: "http://scalacheck.org/" ---- diff --git a/_projects/scodec.md b/_projects/scodec.md deleted file mode 100644 index 941b1adc..00000000 --- a/_projects/scodec.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "scodec" -category: "Binary serialization" -description: "scodec is a combinator library for working with binary data. It focuses on contract-first and pure functional encoding and decoding of binary data and provides integration with shapeless." -github: "https://github.com/scodec/scodec" ---- diff --git a/_projects/shapeless.md b/_projects/shapeless.md deleted file mode 100644 index 07843297..00000000 --- a/_projects/shapeless.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -title: "Shapeless" -category: "Generic Programming" -description: "Shapeless is a generic programming library. Starting with implementations of Scrap your boilerplate and higher rank polymorphism in Scala, it quickly grew to provide advanced abstract tools like heterogenous lists and automatic instance derivation for type classes." -github: "https://github.com/milessabin/shapeless" - -core: true -extensions: - - title: "argonaut-shapeless" - description: "Automatic derivation for argonaut" - link: "https://github.com/alexarchambault/argonaut-shapeless" - - title: "scalacheck-shapeless" - description: "Automatic derivation for ScalaCheck" - link: "https://github.com/alexarchambault/scalacheck-shapeless" - - title: "shapeless-contrib" - description: "Various bindings for third-party libraries" - link: "https://github.com/typelevel/shapeless-contrib" ---- diff --git a/_projects/specs2.md b/_projects/specs2.md deleted file mode 100644 index 54d1f3db..00000000 --- a/_projects/specs2.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: post -title: "specs2" -category: "Expressive specifications" -description: "specs2 is a library for writing executable software specifications, aiming for conciseness, readability and extensibility." -github: "https://github.com/etorreborre/specs2" -permalink: "http://specs2.org/" ---- diff --git a/_projects/spire.md b/_projects/spire.md deleted file mode 100644 index 0726be82..00000000 --- a/_projects/spire.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: post -title: "spire" -category: "Numeric abstractions" -description: "Spire is a numeric library for Scala which is intended to be generic, fast, and precise. Using features such as specialization, macros, type classes, and implicits, Spire works hard to defy conventional wisdom around performance and precision trade-offs." -github: "https://github.com/non/spire" - -core: true ---- diff --git a/_projects/structures.md b/_projects/structures.md deleted file mode 100644 index cbd7d13b..00000000 --- a/_projects/structures.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "structures" -category: "Functional type classes" -description: "Zero-dependency Scala library that defines commonly used type classes for functional programming." -github: "https://github.com/mpilquist/structures" ---- diff --git a/_projects/tut.md b/_projects/tut.md deleted file mode 100644 index 06431a24..00000000 --- a/_projects/tut.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: post -title: "tut" -category: "Checked documentation" -description: "A very simple documentation tool for Scala that reads Markdown files and interprets Scala code in tut sheds, allowing you to write documentation that is typechecked and run as part of your build." -github: "https://github.com/tpolecat/tut" ---- diff --git a/bin/update-project-data.sc b/bin/update-project-data.sc new file mode 100755 index 00000000..a8b5d748 --- /dev/null +++ b/bin/update-project-data.sc @@ -0,0 +1,51 @@ +#!/usr/bin/env amm + +import $ivy.`io.circe::circe-yaml:0.12.0` +import $ivy.`io.circe::circe-parser:0.12.3` +import $ivy.`io.circe::circe-generic:0.12.3` +import $ivy.`com.lihaoyi::requests:0.4.7` +import $ivy.`com.lihaoyi::os-lib:0.6.2` + +import io.circe.yaml +import io.circe.yaml.syntax._ +import io.circe.parser +import io.circe._ +import io.circe.generic.auto._ + +val yamlPath = os.pwd / "_data" / "projects.yml" + +val content = os.read(yamlPath) +val githubToken = sys.env("GITHUB_TOKEN") + +final case class RepoMeta( + description: String, + stargazers_count: Long, + homepage: String +) + +def fetchRepoMeta(org: String, repo: String): RepoMeta = { + val url = s"https://api.github.com/repos/$org/$repo" + val resp = requests.get(url, headers = Map("Authorization" -> s"token $githubToken")) + if (resp.is2xx) { + val js = parser.parse(resp.text).toTry.get + js.as[RepoMeta].toTry.get + } else throw new Exception(s"Non 2xx response from $url, $resp") +} + +val result = for { + js <- yaml.parser.parse(content) +} yield js +.mapArray(_.map(_.hcursor.downField("projects").withFocus(_.mapArray(_.map(_.mapObject(transformProjectObj)))).top.get)) + +def transformProjectObj(projectObj: JsonObject): JsonObject = { + val githubUrl = projectObj("github").get.asString.get + val orgRepo = githubUrl.split("/").takeRight(2) + val repoMeta = fetchRepoMeta(orgRepo(0), orgRepo(1)) + projectObj.deepMerge(JsonObject.fromMap(Map( + "description" -> Json.fromString(repoMeta.description), + "stars" -> Json.fromLong(repoMeta.stargazers_count) + ) ++ (if (repoMeta.homepage.isEmpty) None else Some("homepage" -> Json.fromString(homepage))) + )) +} + +os.write.over(yamlPath, result.right.get.asYaml.spaces2) diff --git a/css/main.scss b/css/main.scss index 5ef955ab..a61cacbd 100644 --- a/css/main.scss +++ b/css/main.scss @@ -521,13 +521,13 @@ blockquote { // PROJECTS .projects__container[data-columns]:before { - content: '3 .column.size-1of3'; + content: '3 .column.size-1of2'; @include media-query($content) { content: '2 .column.size-1of2'; } @include media-query-min($content) { - content: '3 .column.size-1of3'; + content: '3 .column.size-1of2'; } @include media-query-min-max($small, $content) { content: '2 .column.size-1of2'; @@ -596,7 +596,6 @@ blockquote { .projects__project-body { position: relative; - max-height: 200px; padding: $spacing-unit; overflow: hidden; @@ -824,78 +823,6 @@ blockquote { /* PROJECTS PAGE ========================================================================== */ -.projects-page { - .section { - margin-top: $spacing-unit; - - &:first-of-type { - margin-top: $spacing-unit * 4; - } - - &.macros { - margin-top: 0; - } - } -} - -.projects-core { - .projects__project { - width: 100%; height: auto; - } - - .projects__project-body { - max-height: 100%; - } -} - -@include media-query($content) { - .about-us { - padding: 0 $spacing-unit * 2; - } -} - -@include media-query($small) { - .about-us { - padding: 0; - } -} - -.list { - margin-top: $spacing-unit; - - .list__item { - width: 100%; - padding: $spacing-unit 0; - border-top: 1px solid $border; - @include clearfix; - - &:first-child { - padding-top: 0; - border-top: 0; - } - - &:last-child { - padding-bottom: 0; - } - - .list__item-slug { - float: right; - color: rgba($black, .6); - - @include media-query($small) { - display: none; - } - } - - h6 { - display: inline-block; - margin: 0; - font-size: 1em; - font-weight: normal; - color: $black; - } - } -} diff --git a/projects/index.html b/projects/index.html index dab3bff1..30cc2bd1 100644 --- a/projects/index.html +++ b/projects/index.html @@ -4,110 +4,34 @@ class: projects-page --- -
+

Libraries

Let the Scala compiler work for you. We provide type classes, instances, conversions, testing, supplements to the standard library, and much more.

- - {% for project in site.projects %} - - {% if project.core %} -
-
- -

- - {{ project.title }} -

-
- {% if project.permalink %} - More - {% endif %} -
-
- {{ project.category }} -

{{ project.description }}

- {% if project.extensions %} -
-

Extensions and companions for {{ project.title }}

-
- {% for extension in project.extensions %} -
- -
{{ extension.title }}
-
- {{ extension.description }} -
- {% endfor %} -
-
- {% endif %} -
-
- {% endif %} - {% endfor %} -
- -
+
- {% for project in site.projects %} - {% unless project.core %} - - {% endunless %} - {% endfor %} -
-
- -
-
-
-

Incubator Projects

-
-
- Newly joined projects -
- {% for incubator in site.data.incubator %} -
- -
{{ incubator.title }}
-
- {{ incubator.description }} -
- {% endfor %} + {% for section in site.data.projects %} +
+
+

+ {{ section.category }} +

-
-
-
- -
-
-
-

Macros and Compiler Plugins

-
-
- Extending the language -
- {% for macro in site.data.macros %} -
- -
{{ macro.title }}
-
- {{ macro.description }} +
+

{{ section.description }}

+
+
+ {% for project in section.projects %} +
+ +
{{ project.title }} - {{ project.stars }}
+
+ {{ project.description }} +
+ {% endfor %}
- {% endfor %} +
+ {% endfor %}