Coder Social home page Coder Social logo

lifocontainers's Introduction

LifoContainers

Library containing various flavours of Last-In-First-Out (LIFO) data structures.

Contents

Requirements

  • iOS 12.0+ / macOS 10.13+
  • Xcode 15.2+
  • Swift 5.9+

Installation Guide

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. LifoContainers supports SPM from 0.2.0 version.

Add dependency to the project

You can add LifoContainers to an Xcode project by adding it as a package dependency:

  1. In Xcode, select "File" → "Add Package Dependencies...";
  2. Enter "https://github.com/AlexLevshenkov/LifoContainers" into the "Search or Enter Package URL" search bar;

Add dependency to the Swift package

Once you have your own Swift package set up, adding LifoContainers as a dependency is as easy as adding it to the dependencies value of your Package.swift:

dependencies: [
    .package(url: "https://github.com/AlexLevshenkov/LifoContainers", from: "<version>")
]

XCFramework

Each release includes *.xcframework framework binary.

  1. Download *.xcframework.zip from assets and unpack it;
  2. Open the Xcode project or workspace;
  3. Go to the target’s General configuration page;
  4. Add the framework target to the Frameworks, Libraries, and Embedded Content section by clicking the Add(+) button;
  5. Since LifoContainers.xcframework contains static libraries only we recommend choosing the "Do Not Embed" embed option;

Build .xcframework by yourself

You may want to build the binary .xcframework file yourself from the source code. To do so you need to run the build-xcframework.sh script in a scripts folder which places the result .xcframework file into the build folder. Or you may follow the instructions provided by Apple.

Demo application

We have created a simple macOS application called ParenthesesValidator to demonstrate how to connect LifoContainers to your project and show an example of problems that could be solved using the LifoContainers API.

ParenthesesValidator checks if parentheses in the given string are paired. If you find it similar to leetcode problem "20. Valid Parentheses" you are right! One of the ways to solve this problem relies on stack what exactly LifoContainers provides to you.

Versioning

LifoContainers follows semantic versioning 2.0.0. We release patch versions for bug fixes, minor versions for new features (and rarely, clear and easy to fix breaking changes), and major versions for any major breaking changes. When we make breaking changes, we also introduce deprecation warnings in a minor version so that our users learn about the upcoming changes and migrate their code in advance.

Contributing

We welcome any contributions. See the CONTRIBUTING.md file for how to get involved.

License

This project is licensed under the MIT License.

lifocontainers's People

Contributors

alexlevshenkov avatar

Stargazers

 avatar

Watchers

Lucian avatar  avatar  avatar

lifocontainers's Issues

Initialise Xcode project

Description

Create and set up Xcode project considering the programming assignment:

Create a new iOS/macOS static framework as an Xcode project, move all the code related to the implemented stacks into them. Users should be able to use the framework within their projects.

The framework is static which means MACH_O_TYPE build parameter should be set to staticlib.

Add `.gitignore` file

Description

A .gitignore file should be added as part of the initial repository setup.

Add installation guide to `README.md` file

Description

As far as the SPM support has been added to the LifoContainers, the framework documentation is missing an installation guide.
Need to describe the process of installation via SPM or by downloading *.xcframework binary file

Add script for running code linters

Description

Script for running SwiftLint and SwiftFormat should be added as part of the initial repository setup.
Documentation for contributors should be updated accordingly.

Supplement the repository documentation

Description

Create documentation:

  • for environmental requirements
  • how to install the framework
  • how the framework release version is formed
  • how to contribute to the project

Add license file

Description

A license file should be added as part of the initial repository setup.

[HW-8] Update linters script

Description

The script running code linters needs to be updated:

  • on CI linters should not autocorrect violations to show more warnings to the developer;
  • on the local machine the developer should have a choice: autocorrect violations whenever possible or not;

Set up process of creating `.xcframework`

Description

  • LifoContainers should be configured for distribution, so need to be done the adjustments from the documentation.

  • I assume LifoContainers will be released not once. Also, the users of the framework may want to create a binary file from the source code by themselves. To make this process unified and easy we need to create a script. We also need to update documentation for the users.

Create simple feature with `LifoContainers` usage

Description

To demonstrate the users of LifoContainers how to connect the framework to their projects and how to use framework API, need to create a simple feature using LifoContainers API in the demo application for macOS.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.